【发布时间】:2010-11-19 15:45:19
【问题描述】:
我正在尝试微调我的 MySQL 服务器,以便检查我的设置、分析慢查询日志并尽可能简化我的查询。
有时如果我的索引正确就足够了,有时则不然。我在某处读过(如果这是愚蠢的,请纠正我)比我需要的更多的索引会产生相同的效果,就像我没有任何索引一样。
多少索引就够了?你可以说这取决于数百个因素,但我很好奇如何清理我的mysql-slow.log 以减少服务器负载。
此外,我还看到了一些“有趣”的日志条目,如下所示:
# Query_time: 0 Lock_time: 0 Rows_sent: 22 Rows_examined: 44
SELECT * FROM `categories` ORDER BY `orderid` ASC;
有问题的表正好包含 22 行,索引设置在 orderid 中。为什么这个查询最终会出现在日志中?如果它只包含 22 行,为什么要检查 44 行?
【问题讨论】:
-
我猜它做了一个排序,所以它以某种方式多次检查同一行:x
-
EXPLAIN SELECT * FROM
categoriesORDER BYorderidASC 返回什么; -
@R. Bemrose:如果我更正它会返回一个 Extra: Using filesort。也许这就是问题所在?
标签: mysql indexing performance logging