免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3983 | 回复: 9
打印 上一主题 下一主题

紧急求助!如何提高百万级别数据的order by效率 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-08 17:34 |只看该作者 |倒序浏览
各位牛人,看看下面这个sql还能优化不,数据有近500万条,执行时间有6分多,实在受不了了啊,其中t.tid,p.tid,p.authorid, p.first, p.dateline都已经加了索引,但是还是无济于事,大家看看还有什么办法没
SELECT p.authorid, p.tid, p.pid, p.fid, p.invisible, p.dateline, p.message, t.special, t.status,
t.subject, t.digest,t.attachment, t.replies, t.views, t.lastposter, t.lastpost, t.displayorder
FROM pre_forum_post p
                INNER JOIN pre_forum_thread t ON t.tid=p.tid
                WHERE p.authorid='35279'  AND p.first='0' ORDER BY p.dateline DESC LIMIT 0,20;

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
2 [报告]
发表于 2012-05-08 17:38 |只看该作者
麻烦给下:

show indexes from pre_forum_post ;
show indexes from pre_forum_thread ;
explain YOUR SQL 的结果

目前这点信息,比较难给你很好的意见

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
3 [报告]
发表于 2012-05-08 17:40 |只看该作者
当然,就目前这点信息来看, 建一个联合索引是一个不错的选择
  1. create index on pre_forum_post  (authorid,first,dateline)  
复制代码

论坛徽章:
0
4 [报告]
发表于 2012-05-08 17:50 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2012-05-08 17:51 |只看该作者
已经将show indexes from pre_forum_post ;
show indexes from pre_forum_thread ;
explain YOUR SQL
结果贴出了图片,再次谢谢大家了

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
6 [报告]
发表于 2012-05-08 18:11 |只看该作者
回复 5# maping1018

楼主试下我2楼给出的索引,应该可以解决问题了。如果不走新加的索引,加上 force index ( YOUR INDEX NAME ) 再试试
   

论坛徽章:
0
7 [报告]
发表于 2012-05-13 16:28 |只看该作者
6分钟,什么概念?那后台运行还行,web情何以堪。应该是order by导致临时表,降低速度吧?不用order by 应该在秒级别吧?

论坛徽章:
8
CU大牛徽章
日期:2013-09-18 15:20:48CU大牛徽章
日期:2013-09-18 15:20:58CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:17天秤座
日期:2013-10-30 14:01:03摩羯座
日期:2013-11-29 18:02:31luobin
日期:2016-06-17 17:46:36
8 [报告]
发表于 2012-05-14 13:21 |只看该作者
楼主,explain在哪里?这个简单的sql怎么看也不值6分钟

论坛徽章:
0
9 [报告]
发表于 2012-05-23 15:45 |只看该作者
回复 1# maping1018


    where 条件怎么在 Left join 后做, 不能在join 前做吗?

论坛徽章:
0
10 [报告]
发表于 2012-05-23 16:55 |只看该作者
执行计划看起来不错,6分钟是你一次执行时间,还是多次的平均值?

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP