sql >> Databáze >  >> RDS >> Sqlserver

FreeText COUNT dotaz na více tabulek je super pomalý

Po chvíli pokusu o chybu jsem našel řešení, které se zdá být funkční. Zahrnuje vytvoření indexovaného zobrazení:

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

Pokud spustím následující dotaz:

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'))

Nyní to trvá 1 sekundu znovu.



  1. CodeIgniter - implode/query binding způsobující nežádoucí řetězec

  2. Codeigniter, mysql, select_max a přidejte 1 před vložením dalšího záznamu

  3. Průvodce PGpool - Rady a postřehy:Část třetí

  4. Jak zkontrolovat, zda jiná tabulka nemá žádná data při připojení k mysql?