1

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

ID | Name  | Status

何百万ものエントリがあります。私が選択した場合:

SELECT * from table where ID = 949442

このクエリは、これよりも高速ですか?

SELECT * from table where ID = 949442 AND status = "OPEN"

この行が OPEN または CLOSED ステータスを持つ可能性があると仮定しますか?

4

2 に答える 2

4

条件を追加するだけWHEREでは、一般的にクエリが高速化されるわけではありません。たとえば、OR条件を追加すると処理が遅くなることがあります。通常、 を使用して条件を追加するANDと、結果セットが小さくなり、ネットワーク経由で送信する必要があるデータが少なくなるという理由だけで、クエリが高速になります。

クエリを高速化するのはWHERE、インデックスに一致する条件を記述する場合です:
8.3. 最適化とインデックス

于 2013-04-11T15:12:16.480 に答える
1

が一意の列である場合ID(そうであるように見えます)、追加の制約が測定可能な方法でパフォーマンスに正または負の影響を与える可能性はほとんどありません。DB エンジンは、O(log n) 時間でその特定の行を既に見つけることができます。既に見つけた行の列の値をチェックすることは、O(1) 操作です。

于 2013-04-11T15:12:46.683 に答える