COUNT*瓶颈整个SQL SELECT

问题描述

| 我有相当复杂的
SELECT
,它有7个
inner joins
和至少13个可变
WHERE
条件。 我已经创建了存储过程,用于控制此选择和搜索条件。每次搜索时,我需要获取选定条件的总记录数,因此,我已经复制了SELECT,并使用相同的联接和条件将其更改为SELECT COUNT(*)。 如果存储过程中没有“ 3”,它将在5ms内搜索260 000条记录。 在存储过程中使用“ 3”时,它将在122ms内搜索260 000条记录 有没有办法加快这个过程?我需要得到这个总数,问题是是否有使其更快的选项。     

解决方法

没有COUNT的查询更快的原因可能是因为数据库实际上不需要查找所有结果即可返回前20个。 我认为没有一个很好的通用解决方案...但是也许您可以将COUNT限制为一个较大的限制...说1001吗?如果您得到1001,那么您的UI可能会说“超过1000个结果...”并允许用户进一步限制查询?     ,我不知道为什么查询中的计数会变慢,但是为了快速解决,最好在程序中计算返回的行。如果要将结果返回到数组或某种列表,则可以使用\“。Count()\”(如果是.NET,则为..) 编辑: 确保所有联接表都使用主键和索引列进行查询。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...