本页主题: MYSQL两条SQL语句效率测试…… 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

phpma

该用户目前不在线
级别: 管理员
精华: 6
发帖: 266
威望: 278 点
金钱: 2780 RMB
贡献值: 0 点
注册时间:2007-05-17
最后登录:2008-11-28

MYSQL两条SQL语句效率测试……

结合连表…两条语句的效率相差甚大!主要是OR与IN的区别……

SELECT tid,sum(downloads) AS downloads FROM cdb_attachments GROUP BY tid ORDER BY aid

UPDATE cdb_threads SET downs = '$downloads' WHERE tid = '$tid'

SELECT t.tid, t.views, t.subject, sum( a.downloads ) AS downloads
FROM cdb_threads t
LEFT JOIN cdb_attachments a ON t.tid = a.tid
WHERE t.fid
IN (
'62', '61', '60', '59', '58', '57', '56', '55', '31', '30', '29', '28', '27', '26', '25', '24', '19'
)
GROUP BY t.tid
ORDER BY downloads DESC
LIMIT 6


SELECT tid,sum(downloads) AS downloads FROM cdb_attachments GROUP BY tid ORDER BY aid

UPDATE cdb_threads SET downs = '$downloads' WHERE tid = '$tid'

SELECT t.tid, t.views, t.subject, sum( a.downloads ) AS downloads
FROM cdb_threads t
LEFT JOIN cdb_attachments a ON t.tid = a.tid
WHERE (
t.fid = '62' OR t.fid = '61' OR t.fid = '60' OR t.fid = '59' OR t.fid = '58' OR t.fid = '57' OR t.fid = '56' OR t.fid = '55' OR t.fid = '31' OR t.fid = '30', '29' OR t.fid = '28' OR t.fid = '27' OR t.fid = '26' OR t.fid = '25' OR t.fid = '24' OR t.fid ='19'
)
GROUP BY t.tid
ORDER BY downloads DESC
LIMIT 6
顶端 Posted: 2008-07-15 18:54 | [楼 主]
phpma

该用户目前不在线
级别: 管理员
精华: 6
发帖: 266
威望: 278 点
金钱: 2780 RMB
贡献值: 0 点
注册时间:2007-05-17
最后登录:2008-11-28

昨天匆匆的发帖!忘了说是用discuz论坛的数据表,数据记录是主题表3W,附件表是5w条记录以上,同时还考虑一个sum求和的区别==

运行速度相差几百倍……哈哈!
顶端 Posted: 2008-07-16 11:12 | 1 楼
开源嘛论坛 » linux、mysql、apache探讨

Guest cache page, Update at 2008-12-02 04:20 桂ICP备07006725号
Powered by PHPWind v6.0 Certificate Code © 2003-07 PHPWind.com Corporation