用where hits>100 order by id的时候第一次运行速度特别慢,60万数据,高压力解决方法

用where hits>100 order by id的时候第一次运行速度特别慢,60万数据,高压力

用select   id,a,b,c,d,e   from   table   where   hits> 100   and   menuid=1   order   by   id   desc   limit   200的时候第一次运行速度特别慢,这个表有60多万条数据

其中hits、menuid建立了索引,有什么办法让它速度快起来吗??

show   processlist   的时候,有很多Sending   data,都是中间有hits> 100   and   menuid=xx的

menuid是目录的ID值,只有1、2、3、4、5、6、7、8、9、10、13、17、19这几种记录

hits是记录点击数,但正常运行时并不update数据,只有压力少的时候update




建立 menuid、hits 聚集索引好了




注意顺序哦

假如你建立的是 hit、menuid聚集索引 和没有索引一样了




建立合理的索引确实能提高查询速度。

聚集索引,就是你表中数据的物理存放顺序。

综合各方面考虑,是否需要在这两列上创建聚集索引。




60万条数据就慢了?

我们这里很多表都100万+的数据量了。速度也是有些慢,不过还可以忍受。

首先服务器最好要有1G或以上的内存。

首先 id 是不是主键?如果不是,也建立索引。

limit 200 是指从第200条数据开始取,一直取完。

其次,以楼主的程序,建立 menuid、hits 聚集索引 会好一些,不过,没有最终解决问题。




不过,如果表结构和实际的SQL完全如上所示。

速度应该不会太慢。

如果很慢也是因为查出来的数据量特别大。




把你的索引结构贴出来,貌似没有建立合适的索引




由于它只有几种记录,似乎建立索引效果欠佳

—————————————-

如果值不多,建议你explain一下,看看MySQL的优化方式




8108 不会太慢呀。

不过,楼主给数据库的缓存太小了吧。




那根据menuid做分区表吧 hits, menuid 分别做索引

用where hits>100 order by id的时候第一次运行速度特别慢,60万数据,高压力解决方法

相关文章:

你感兴趣的文章:

标签云: