mysql查询优化

时间:2011-07-15 03:21:43

标签: mysql optimization query-optimization

我有以下查询:

SELECT * 
  FROM posts USE INDEX(abc) 
 WHERE a=3 and b=123 and c>4012 and d>5212300 and e!=661 
 LIMIT 10;

INDEX(abc)是a,b和c列的索引。

该查询在数据库变大之前一直运行良好。它现在有大约1000万行。

我一直试图寻找替代方案来优化它而不会取得多大成功。我希望有人能给我一些线索。感谢。

BTW,我的桌面引擎是innodb。

1 个答案:

答案 0 :(得分:1)

我会通过删除您正在使用的索引提示来开始我的优化。查询优化器在猜测查询的最佳执行计划方面做得非常好,从长远来看提供索引提示通常会对查询性能产生负面影响。

SELECT * 
  FROM posts 
 WHERE a=3 and b=123 and c>4012 and d>5212300 and e!=661 
 LIMIT 10;

我还认为列abcde上的独立索引可能会有所帮助,因为查询规划器将能够组合索引以解析查询。 (不确定MySQL,但如果有帮助,PostgreSQL可以将它们组合起来解析查询。)