sql中select查询大数据量表时很慢

有一张表table1数据量大概130万,查询sql如下:

select count(*) from(

select distinct a.example_id,a.plan_id,a.trustor_id from table1 a

where DEL_STATUS=0 and (example_id,1,2) in(...)

and plan_id in(...)

)

查询花了将近40秒钟,结果集的数据量就有50万,而且多加一个where条件,都会导致查询耗时增加,就算加索引也没有效果,因为我这里必须要加几个where条件,而这些条件又无法过滤掉大部分的数据,所以只会白白增加耗时。

经过一段时间对sql的修改调整,调整为如下的sql:

select count(*) from(

select a.example_id,a.plan_id,a.trustor_id,count(*) cnt from table1 a

where DEL_STATUS=0 and (example_id,1,2) in(...)

group by a.example_id,a.plan_id,a.trustor_id

) where plan_id in()

不使用distinct,而是使用count + group by来去重,然后在外层过滤where条件,发现查询只要5秒多,速度一下子快了太多,可能是数据库中group by有着天然的优势吧

相关推荐
DBA小马哥43 分钟前
Oracle迁移实战:如何轻松跨越异构数据库的学习与技术壁垒
数据库·学习·oracle·信创·国产化平替
暮乘白帝过重山1 小时前
ArkTS ForEach 参数解析:组件与键值生成器
开发语言·数据库
一条咸鱼¥¥¥1 小时前
【运维经验】使用QQ邮箱SMTP服务器设置ssms计划任务完成时邮件发送
运维·服务器·经验分享·sql·sqlserver
菜鸟plus+2 小时前
N+1查询
java·服务器·数据库
子夜江寒2 小时前
MySQL 表创建与数据导入导出
数据库·mysql
菜鸟小九2 小时前
redis基础(安装配置redis)
数据库·redis·缓存
保定公民2 小时前
达梦数据库使用cp备份集恢复报错分析与解决
数据库
中冕—霍格沃兹软件开发测试4 小时前
测试用例库建设与管理方案
数据库·人工智能·科技·开源·测试用例·bug
The star"'4 小时前
mysql(4-7)
数据库·mysql·adb
jiayong235 小时前
Redis面试深度解析
数据库·redis·面试