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主键索引,不需要回表查询。所以对于表操作尽量走主键索引,不会回表。

相关推荐
安迪小宝17 分钟前
16 celery集成其他工具
数据库·python·sqlite·celery
晨曦54321019 分钟前
Django入门指南:Python全栈框架解析
数据库·sqlite
皮皮林5511 小时前
面试官:2000w 数据的大表如何优化?至少提供三种方案!
数据库
t198751281 小时前
使用zip命令在Ubuntu 20.04上进行文件夹压缩
linux·数据库·ubuntu
牵牛老人2 小时前
聊聊Qt 中的多面手之QVariant 变体类
开发语言·数据库·qt
笨手笨脚の2 小时前
Redis 常用配置实践
数据库·redis·配置·spring runner
二川bro3 小时前
国产数据库KingbaseES零基础实战:Oracle兼容功能从入门到精通
数据库·oracle
怀君4 小时前
Flutter——数据库Drift开发详细教程(七)
数据库·flutter
荔枝吻4 小时前
【沉浸式解决问题】Mysql中union连接的子查询是否并行执行
数据库·mysql·union
不许代码码上红4 小时前
【MySQL】MySQL 数据库操作与设计
数据库·mysql·oracle