Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytanie FreeText COUNT w wielu tabelach jest bardzo wolne

Po krótkiej próbie błędu znalazłem rozwiązanie, które wydaje się działać. Polega na utworzeniu indeksowanego widoku:

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

Jeśli uruchomię następujące zapytanie:

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

Teraz zajmuje to 1 s ponownie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 sposoby na uzyskanie nazwy dnia z daty w SQL Server (T-SQL)

  2. Wdrażanie bezpieczeństwa aplikacji - poziom aplikacji i poziom bazy danych (ASP .NET i SQL Server 08)

  3. jaka jest różnica między indeksem klastrowym a indeksem unikalnym?

  4. Jak mogę mieć wiele wspólnych wyrażeń tabelowych w jednej instrukcji SELECT?

  5. Jak uzyskać dane z ostatnich 7 dni od aktualnej daty i godziny do ostatnich 7 dni na serwerze sql?