通常,对于EXPLAIN中每个具有的行Using where
,您都需要使用索引(possible keys
和keys
列)来使它。这些是您的过滤器,包括WHERE和ON。说得Using index
更好。这意味着有一个覆盖索引,MysqL可以直接从索引中检索数据,而不必访问表数据中的行。
Using where
应该查看没有的行,它返回大量行。这些是表中所有行的返回值。我不知道您的查询是什么,所以我不知道是否@R_419_2472@被提醒。尝试过滤结果集以减小大小并提高性能。
通常,您应该尽量避免看到Using filesort
或Using temporary
,尽管只有在不期望它们的情况下它们才是不好的。
Filesort通常与ORDER子句一起出现。通常,您希望MysqL使用覆盖索引(Using index
),以便已按顺序从服务器返回行。如果不是,则MysqL必须在以后使用文件排序对其进行排序。
Using temporary
当它引用派生表时可能会很糟糕,因为它们没有索引。看来您已经用索引明确创建了一个临时表,所以@R_419_2472@还不错。有时,您唯一的选择是使用派生表,因此Using temporary
。