我有这个问题:
$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'");
通过这样做,我实际上是在加快或减慢这个过程吗?这意味着,通过添加额外的过滤器,它会减慢页面上的加载时间或增加加载时间吗?看来它必须要考虑更多的表格。
答案 0 :(得分:0)
是否添加其他过滤器会降低查询速度的问题太宽泛而无法回答。答案是,这取决于。
如果附加过滤器使用AND作为逻辑连接器,并且它是索引字段的过滤器,它会检查等效性,那么它可能会更快。
AND fieldname = 'value'
但是,如果附加过滤器使用OR作为逻辑连接并且没有索引,则可能会使其慢下来。
OR fieldname = 'value'
唯一可以确定的方法是尝试运行并收集不同查询的统计信息,以查看哪个更快。
如果您发现OR导致查询运行缓慢,通常可以通过将其转换为UNION ALL查询来解决。