MySQL - 过滤条件的增加是否会增加查询执行时间?

标签 mysql

是否在 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/

相关文章:

MySQL - 从某个时间点到那天结束的日期时间

mysql - 用户 'root' @localhost' 的访问被拒绝(使用密码 : YES)

MySql:如何在列中使用相同文本的 "list"记录

php - PDO 通过引用传递参数

mysql - 如何在 JOIN 后合并行,其中出现重复的第一列,但其他列中的信息不同

javascript - MySQL 用 PASSWORD() 插入设置

MySQL - 选择多个表的非重复计数

java - 如何在 java netbeans 类中存储 mysql 的数据库连接方法,并在 jFrame 中需要时调用它

mysql - MyISAM 性能 : Join Decomposition?

php - 存储类别和子类别(可能有无限子类别),以及将它们全部从 MYSQL 返回到 JSON 的函数