sql >> Database teknologi >  >> RDS >> Sqlserver

FreeText COUNT forespørgsel på flere tabeller er super langsom

Efter lidt forsøg med en fejl fandt jeg en løsning, der ser ud til at virke. Det involverer oprettelse af en indekseret visning:

CREATE VIEW [dbo].[vw_ProductBrand]
WITH SCHEMABINDING
AS
SELECT     dbo.Product.ID, dbo.Product.Name, dbo.Product.SKU, dbo.Brand.Name AS BrandName
FROM         dbo.Product INNER JOIN
                      dbo.Brand ON dbo.Product.BrandID = dbo.Brand.ID

GO

CREATE UNIQUE CLUSTERED INDEX IX_VW_PRODUCTBRAND_ID 
    ON vw_ProductBrand (ID);
GO

Hvis jeg kører følgende forespørgsel:

DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
GO

SELECT count(*) 
FROM   Product
       inner join vw_ProductBrand
         on Product.BrandID =  vw_ProductBrand.ID
WHERE  (contains(vw_ProductBrand.Name, 'pants') 
   or 
            contains( vw_ProductBrand.BrandName, 'pants'))

Det tager nu 1 sek igen.



  1. Filupload med jQuery og CodeIgniter (men ingen sideopdatering)

  2. Kan jeg justere værdien af ​​et automatisk forøget felt i databasen automatisk?

  3. MySQL LEFT JOIN, GROUP BY og ORDER BY fungerer ikke som påkrævet

  4. Mysql finde nøgleord i tekst