Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Truy vấn FreeText COUNT trên nhiều bảng siêu chậm

Sau một chút thử nghiệm một lỗi, tôi đã tìm thấy một giải pháp có vẻ hoạt động. Nó liên quan đến việc tạo một chế độ xem được lập chỉ mục:

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

Nếu tôi chạy truy vấn sau:

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

Hiện mất 1 giây một lần nữa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hoạt động của hàm SQL Server DIFFERENCE ()

  2. Khóa ngoại có cải thiện hiệu suất truy vấn không?

  3. Làm phẳng bảng 1 hàng thành bảng cặp khóa-giá trị

  4. Tập lệnh C # Sử dụng StreamWriter Tạo ra Nhân vật Phụ?

  5. Sửa đổi giá trị mặc định trong SQL Server