インデックス調整

1752 ワード

質問する
条件セクションが次の場合、インデックスは[deptno+ename]順に整理され、[ename+deptno]順に整理されますが、インデックススキャン効率に差はありません.
-->
非クラスタインデックスを作成します.
CREATE NONCLUSTERED INDEX IX_Customer_FirstName_LastName ON dbo.Customers(FirstName, LastName)
  • FirstName、LastNameの検索
    SELECT CustomerId, FirstName, LastName
      FROM dbo.Customers WITH(NOLOCK)
      WHERE FirstName = 'AAA' AND LastName = 'BBB'
    -> Index Seek(NonClustered)
    IX Customer FirstName LastNameに乗る

  • SELECT CustomerId, FirstName, LastName
      FROM dbo.Customers WITH(NOLOCK)
      WHERE LastName = 'BBB' AND FirstName = 'AAA' 
    -> Index Seek(NonClustered)
    IX Customer FirstName LastNameに乗る

  • SELECT CustomerId, FirstName, LastName
      FROM dbo.Customers WITH(NOLOCK)
      WHERE FirstName = 'AAA' 
    -> Index Seek(NonClustered)
    IX Customer FirstName LastNameに乗る

  • SELECT CustomerId, FirstName, LastName
      FROM dbo.Customers WITH(NOLOCK)
      WHERE LastName = 'BBB'
    ->インデックススキャン
    リンクテキスト
    インデックスによってテーブルにアクセスする回数が同じであっても、インデックス構成はスキャン効率に影響します.したがって、インデックススキャンの効率を向上させるためには、インデックスコラムの順序を変更する必要があることが多い.
    A、Bテーブルなら
    Aには50個のデータがあり、Bには1000個のデータがある.
    もし、もし
    SELECT A.NO, B.EX
      FROM A WITH(NOLOCK)
      INNER JOIN B ON A.NO = B.NO
    スピードは速いけど
    SELECT A.NO, B.EX
      FROM B WITH(NOLOCK)
      INNER JOIN A ON B.NO = A.NO
    遅いBのデータはAより多い.