sql >> データベース >  >> RDS >> Sqlserver

複数のテーブルに対する FreeText COUNT クエリが非常に遅い

    少し試行錯誤した後、うまくいくと思われる解決策を見つけました。これには、インデックス付きビューの作成が含まれます:

    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
    

    次のクエリを実行すると:

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

    1 秒かかるようになりました もう一度。



    1. PostgreSQLでのデータベースのインデックス作成

    2. JDBCを使用してOracleデータベース上にJavaを作成する

    3. モデルがわずかに変更された複数のデータベース。 Entity Frameworkが実行時に列を削除できるようにするにはどうすればよいですか?

    4. 通常のajaxと長いポーリングの違い