4

私は2つのテーブルを持っています:

tblValidItems - | -tblItems _

validID        itemID
-------        ------
3              1
5              2
6              3
...            4
~ 8 K items    5
               ..... 
               ~ 20 K items

tblItems私の質問は、にもある特定のものを選択することですtblValidItems:

SELECT tblItems.itemID FROM tblItems 
JOIN tblValidItems ON tblItems.itemID = tblValidItems.validID

両方のテーブルでインデックスの有無にかかわらずクエリを試しましたが、結果はほとんど変わりません。

  • 両方のテーブルにインデックスがある場合 - 127ms
  • どちらのテーブルにもインデックスがない場合 - 132ms

インデックスがこのクエリの速度に劇的な影響を与えると思っていたので、これには驚きました。なぜそうしないのですか?

4

2 に答える 2

5

クエリは、行を見つける時間ではなく、8,000 個の値を返す時間によって支配されていると推測しています。

インデックスは、作業中のデータのサイズを縮小する場合に最も役立ちます。20k 行から 8k 行への削減は特に重要ではありません。

于 2013-05-24T13:57:45.623 に答える
4

Sqlite の主キーは、デフォルトでインデックス化されます。とにかく、インデックス付きの主キーに参加しています。

クエリで sqlite がどのように機能するか疑問がある場合は、EXPLAIN QUERY PLANを使用してください。

于 2013-05-24T13:56:39.973 に答える