向SQL查询添加更多过滤器会减慢它吗?

时间:2015-10-21 16:42:07

标签: php mysql sql

我有这个问题:

 $query = $this->pdo->prepare("SELECT * FROM `" . $this->table . "` WHERE type='hod' OR type='special'");

我想添加更多过滤器,例如:

$query = $this->pdo->prepare("SELECT * FROM `" . $this->table . "` WHERE type='hod' OR type='special' AND label!='space'");

通过这样做,我实际上是在加快或减慢这个过程吗?这意味着,通过添加额外的过滤器,它会减慢页面上的加载时间或增加加载时间吗?看来它必须要考虑更多的表格。

1 个答案:

答案 0 :(得分:0)

是否添加其他过滤器会降低查询速度的问题太宽泛而无法回答。答案是,这取决于。

如果附加过滤器使用AND作为逻辑连接器,并且它是索引字段的过滤器,它会检查等效性,那么它可能会更快。

AND fieldname = 'value'

但是,如果附加过滤器使用OR作为逻辑连接并且没有索引,则可能会使其慢下来。

OR fieldname = 'value'

唯一可以确定的方法是尝试运行并收集不同查询的统计信息,以查看哪个更快。

如果您发现OR导致查询运行缓慢,通常可以通过将其转换为UNION ALL查询来解决。