大表中按字段进行慢查询有索引

大表中按字段进行慢查询有索引

我不明白这个查询中的问题,当我使用 category_id = 'XX' 条件进行查询时,该查询需要几分钟才能执行,但是没有按 category_id 过滤的相同查询需要 0.09 秒,并且 category_id 是一个 int(11) 无符号索引。

这是我的表格:

http://www.youcial.es/tableproblems/table_business.htm

http://www.youcial.es/tableproblems/table_products.htm

解释:

http://www.youcial.es/tableproblems/explain_fast.htm

http://www.youcial.es/tableproblems/explain_slow.htm

唯一的区别是按 category_id 进行过滤。我没有发现按此字段过滤存在性能缓慢的问题。可能是什么问题?

谢谢。

答案1

这是因为您使用了 LIMIT 0,30
您的请求中没有 category_id = 'XX',可以非常快速地找到前 30 个值。
您的请求中带有 category_id = 'XX',必须深入挖掘表格才能找到 30 行(可能是因为您没有很多 'xx')。

如果删除 LIMIT 0,30,您的 2 个请求将具有大约相同的运行长度。

相关内容