用户
 找回密码
 入住 CI 中国社区
搜索
12
返回列表 发新帖
楼主: 阿呆
收起左侧

[数据库] 请问这个查询如何优化

[复制链接]
发表于 2013-4-15 10:03:34 | 显示全部楼层
好久没来逛逛了。
mysql> SELECT * FROM goods
    -> JOIN goodsatt ON
    -> (goods.goodsid=goodsatt.goodsid)
    -> WHERE goodsatt.cid IN(101,200,201,202,203,204,205)
    -> LIMIT 110020,10;
给你这个语句提点建议:
1.确保索引:goodsid,cid
2.LIMIT 110020,10;这个地方至少要扫描110020条记录,建议使用覆盖索引查询:
  select * from goods join (select goodsid from goods where ci in(...) limit ...) as gd2 using(goodsid)
发表于 2013-6-15 18:53:10 | 显示全部楼层
阿呆 发表于 2013-4-10 09:27
加索引后。
limit 10W以上数据时很慢,至少要5S

没注意仍有问题。

问:不加索引时,limit 100000是5秒10秒的速度吗?

投诉速度慢,又要这又要哪,有当老板的潜质!

这不是慢,是要求更快。

join默认是inner join,看你的情况应是right join。

原来的查询语句的子查询方式亦是潜在的right join。

用Right join肯定会快些,但快多少则难说。

要处理大数据库,先打好基本功吧。

本版积分规则