sql的count函数优化

sql的count(1)函数会执行遍历表统计符合条件的数目,下面有两个sql

第一条:

select count(1)

from membership_call_detail_statistics a

where a.repository_id = 'f2a4ed6b3e074e33bd99998c1def26f8'

and a.statistics_date

between '2023-04-01 00:00:00' and '2023-07-03 00:00:00'

查询平均耗时500毫秒左右

第二条

select count(1)

from membership_call_detail_statistics a

where a.repository_id = 'f2a4ed6b3e074e33bd99998c1def26f8'

and a.id

between (select min(id) from membership_call_detail_statistics where statistics_date = '2023-04-01 00:00:00')

and (select max(id) from membership_call_detail_statistics where statistics_date = '2023-07-03 00:00:00')

查询平均耗时50毫秒左右

第二条是第一条的效率10倍,原因是第一条的repository_id ='f2a4ed6b3e074e33bd99998c1def26f8',走的是date索引,需要回表查询;而第二条走的是id主键索引,不需要回表查询。所以对于表操作尽量走主键索引,不会回表。

相关推荐
山峰哥1 分钟前
SQL性能瓶颈破局:Explain分析+实战优化全攻略
大数据·数据库·sql·oracle·性能优化
幺零九零零2 分钟前
Redis容器了解Docker底层
数据库·redis·docker
Vic101014 分钟前
【无标题】
java·数据库·分布式
特立独行的猫a4 分钟前
QT开发鸿蒙PC应用:第一个Qt Widget应用入门
数据库·qt·harmonyos·鸿蒙pc·qtwidget
l1t6 分钟前
sqlite递归查询指定搜索顺序的方法
数据库·sql·sqlite·dfs·递归·cte
盛世宏博北京11 分钟前
守护千年文脉:图书馆古籍库房自动化环境治理(温湿度 + 消毒)技术方案
服务器·数据库·自动化·图书馆温湿度监控
「光与松果」11 分钟前
Mongodb 日常维护命令集
数据库·mongodb
哥哥还在IT中13 分钟前
etcd内存占用高如何排查
数据库·etcd
Web极客码17 分钟前
使用phpMyAdmin轻松操作WordPress数据库
数据库·oracle
啥都不懂的小小白27 分钟前
MVCC深度解析:MySQL如何实现高效无阻塞的并发读写
数据库·mysql·mvcc