数据库中经常分组查询的表如何做性能优化(group by)
来源:互联网 发布:格林斯潘 知乎 编辑:程序博客网 时间:2024/05/17 08:34
一、原sql
SELECT U.NAME AS NAME,
U.ACCOUNT,
U.REGION_NAME,
U.ORG_NAME,
L.LOGIN_TIME AS M
FROM PUB_USER U,
(SELECT t.CREATOR, MAX(t.LOGIN_TIME) LOGIN_TIME
FROM PUB_USER_LOGIN t
GROUP BY t.CREATOR) L
WHERE U.STATUS = '1'
AND L.CREATOR = U.ID
AND L.LOGIN_TIME < DATE_ADD(CURDATE(), INTERVAL - 1 YEAR)
ORDER BY L.LOGIN_TIME DESC
查询63行数据需要三秒以上
二、分析问题
数据量分析:
表PUB_USER:1k左右
表PUB_USER_LOGIN :10W行以上
主要消耗时间的是下面这个语句
SELECT t.CREATOR, MAX(t.LOGIN_TIME) LOGIN_TIME
FROM PUB_USER_LOGIN t
GROUP BY t.CREATOR
三、解决上面语表中数据分组缓慢问题
给分组查询的字段添加联合索引,mysql语法如下:
CREATE INDEX PUB_USER_LOGIN_TWO USING BTREE ON PUB_USER_LOGIN(CREATOR,LOGIN_TIME)
添加索引之后查询时间在0.01秒左右
- 数据库中经常分组查询的表如何做性能优化(group by)
- SQL中group by分组查询的内容(包含to_char和order by)
- GROUP BY分组查询中问题
- mysql中GROUP BY 分组查询
- group by分组查询
- GROUP BY 分组查询
- 数据库中Having放在分组函数group by后过滤查询组
- Group by 分组选择表中重复的数据
- 在entity framework 中使用 LINQ 对表进行左关联查询且group by 分组查询的示例,并且按小时分组查询时间段
- sql中关于分组(group by)的理解
- SQL分组查询group by
- SQL group by分组查询
- mysql(Group By 分组查询)
- SQL group by分组查询
- mysql分组查询(group by)
- SQL group by分组查询
- group by 分组查询、分页查询、连表查询
- 数据库排名sql,group by 分组查询按照时间最大值
- YARN体系学习笔记
- php 时间相差(x年前,x月前,x天前,x小时前,x分钟前,x秒前)
- Understanding Multipeer Connectivity Framework in iOS 7 – Part 1
- 关于APP接口设计
- Android 中获取Apk的包名和类名的实现方法
- 数据库中经常分组查询的表如何做性能优化(group by)
- iOS学习之——NSDate
- 01.手把手教你 .Net EasyUI DataGrid(创建数据表格)
- Understanding Multipeer Connectivity Framework in iOS 7 – Part 2
- Spark 源码剖析
- php 随机取数组中的一个值,或多个值
- destoon网站根目录license.txt不允许修改或删除,请检查
- EventBus使用详解(一)——初步使用EventBus
- poj 3469 Dual Core CPU(最小割)