是否在 WHERE
中提供多个过滤条件-clause 减少了搜索时间,还是因为它一次处理多个过滤器,所以增加了所需的处理量,从而增加了执行时间?
例如
select * from table_name where this = foo and that = bar
对比
select * from table_name where this = foo
最佳答案
一般来说,您所描述的查询所花费的时间取决于读取数据的 I/O 时间和返回结果集的时间。与读取和返回记录的时间相比,确定记录是否在结果集中所花费的时间可以忽略不计。
这是一个总体概述。如果 where
子句上有索引,那么这两个构造基本上是相同的。对第二个键进行比较可能会产生非常非常小的额外开销,但这对于现实世界的应用程序不会产生影响。
与一般情况的另一个区别是比较确实需要很长时间。这可能是由于大型文本字段或复杂的用户定义函数上的 like
造成的。在这种情况下,比较可能会产生影响。
但更根本的是,查询执行不同的操作。在担心晦涩难懂的性能特征之前,您应该表达真正需要的查询。例如,在数据库中进行过滤通常比将数据带回应用程序并在那里进行过滤要好得多。
关于MySQL - 过滤条件的增加是否会增加查询执行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31374791/