我有 700 万条记录的 mysql 数据库
当我运行查询时
select * from data where cat_id=12 order by id desc limit 0,30
查询需要很长时间,例如 0.4603 秒
但同样的查询没有 out (where cat_id=12
) 或没有 (order by id desc
) 非常快
查询需要很长时间,如 0.0002 秒
我有 cat_id 和 id 的索引
有什么方法可以快速查询(where 和 order by)
thanks
创建一个结合了cat_id和id的复合索引。看http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html有关语法和示例。
如果您仅指定“cat_id=12”,您将获得所有匹配的行,由于有索引,速度很快。但是这些行不会被排序,因此mysql必须将它们全部读入临时表并对该表进行排序,这很慢。
类似地,“order by id desc”将快速对行进行排序,但 mysql 必须读取所有行以找出哪些行具有“cat_id=12”,这很慢。
综合指数应该可以解决这些问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)