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

相关推荐
2401_832298102 分钟前
存算分离2.0,阿里云EMR Serverless破解数据处理瓶颈
数据库
Maggie_ssss_supp6 分钟前
Linux-MySQL日志管理
数据库·mysql
熬夜敲代码的小N7 分钟前
MySQL数据可视化实战:从SQL雕琢到图表绽放
sql·mysql·信息可视化
喜欢吃豆11 分钟前
PostgreSQL 高维向量存储架构深度解析:架构限制、核心原理与行业解决方案
数据库·人工智能·postgresql·架构·2025博客之星
茁壮成长的露露12 分钟前
Percona Backup for MongoDB备份恢复操作
数据库·mongodb
l1t13 分钟前
一个在postgresql中运行很快,但是在duckdb中运行很慢的SQL
数据库·sql·postgresql·duckdb
曹牧16 分钟前
Oracle:增加十分钟
数据库·oracle
码界奇点21 分钟前
深入解析MySQL9主从复制架构详解从原理到实战
数据库·sql·架构·可用性测试
独自归家的兔29 分钟前
深度对比:PostgreSQL与MySQL的核心差异及选型指南
数据库·mysql·postgresql
结衣结衣.34 分钟前
Redis的基本全局命令以及数据类型和内部编码
数据库·redis·bootstrap