私はテーブルを持っています:
ID | Name | Status
何百万ものエントリがあります。私が選択した場合:
SELECT * from table where ID = 949442
このクエリは、これよりも高速ですか?
SELECT * from table where ID = 949442 AND status = "OPEN"
この行が OPEN または CLOSED ステータスを持つ可能性があると仮定しますか?
私はテーブルを持っています:
ID | Name | Status
何百万ものエントリがあります。私が選択した場合:
SELECT * from table where ID = 949442
このクエリは、これよりも高速ですか?
SELECT * from table where ID = 949442 AND status = "OPEN"
この行が OPEN または CLOSED ステータスを持つ可能性があると仮定しますか?
条件を追加するだけWHERE
では、一般的にクエリが高速化されるわけではありません。たとえば、OR
条件を追加すると処理が遅くなることがあります。通常、 を使用して条件を追加するAND
と、結果セットが小さくなり、ネットワーク経由で送信する必要があるデータが少なくなるという理由だけで、クエリが高速になります。
クエリを高速化するのはWHERE
、インデックスに一致する条件を記述する場合です:
8.3. 最適化とインデックス
が一意の列である場合ID
(そうであるように見えます)、追加の制約が測定可能な方法でパフォーマンスに正または負の影響を与える可能性はほとんどありません。DB エンジンは、O(log n) 時間でその特定の行を既に見つけることができます。既に見つけた行の列の値をチェックすることは、O(1) 操作です。