日期:2014-05-16  浏览次数:20800 次

sql求优化(执行时间要30秒,太久了)


A表如下,还有自动增长的字段及其他不重要的字段。表约有两千五百万条记录。

sid | op | code 
3 | 1 | -199
1 | 2 | 0
11 | 1 | 1
3 | 2 | 0

我想查询出code为0,op为1的sid的个数,我写的sql语句如下:

select sid,count(*) as num from A where code=0 and op=1 group by sid order by num desc limit 10;

这个执行时间要30秒。。时间太长了,求优化




------解决方案--------------------
表索引情况如何、code、op有多少种值
------解决方案--------------------
create index xxx on A表(code,op,sid)
------解决方案--------------------
没什么影响,看一下你的CPU利用率。
------解决方案--------------------
探讨

不能改表结构

执行30秒会对数据库和机器有很大影响么?