我有一张桌子:
ID | Name | Status
拥有数百万条记录。如果我选择:
SELECT * from table where ID = 949442
这个查询会比这个查询更快:
SELECT * from table where ID = 949442 AND status = "OPEN"
假设此行可能处于OPEN或CLOSED状态?
答案 0 :(得分:4)
只添加更多WHERE
条件通常不会使您的查询更快。例如,有时添加OR
条件会使事情变得缓慢。通常使用AND
添加更多条件将使查询更快,即使只是因为结果集较小,因此必须通过网络传输较少的数据。
使查询更快的原因是当您编写与索引匹配的WHERE
条件时:
8.3. Optimization and Indexes
答案 1 :(得分:1)
如果ID
是一个唯一的列(如图所示)那么额外的约束不太可能以任何可衡量的方式影响性能,无论是正面的还是负面的。数据库引擎已经可以在O(log n)时间内找到该特定行,并且检查已经存在的行中的列的值是O(1)操作。