探索者

今天数据才4万多,发现有个sql查询的时间特别慢徘徊在700ms附近,我觉得绝对有问题

这个条sql如下:

SELECT  * 
FROM table1 AS a
LEFT JOIN table2 AS b ON a.id = b.nid
WHERE b.tid
IN ( 144, 39, 208, 209, 67, 213, 219, 220, 1, 646, 177, 19, 832, 191, 590, 9, 278, 301, 715, 957, 15, 1266, 356, 1127, 2 ) 
ORDER BY a.id DESC 
LIMIT 10

我看了索引

看不出问题;

看各阶段的时间

发现 Sending Data 耗时最多,在网上看说这个是发送和接收数据

为什么而需要这么多时间呢?

发现主要2个问题 缓冲区太小 我把缓冲区都变大了10倍 没有什么效果,那就不是这个问题

还有一个问题是说索引的问题。

其中 a.id是主键自增 b.nid 也建立索引

我把ORDER BY a.id DESC 改成 ORDER BY b.nid DESC 奇迹发生了

时间一下缩短到了70ms左右


北极鸥

北极鸥:b.nid 建立了索引,和a.id的自增主键有区别么,自增主键不也是加的索引吗?

2013-12-02 11:23:38回复

思考机器

思考机器: 

2013-09-22 14:00:41回复


京ICP备12040723号 关于易寻 联系我们 手机版