mysql - 这个查询在 MySQL 中使用索引吗?

标签 mysql database indexing

我不确定这个查询是否使用了索引。 我怎么知道?

mysql> EXPLAIN SELECT au.* FROM users au WHERE au.id IN(SELECT fa.from_user_id FROM approvals fa INNER JOIN personas pp ON fa.persona_id = pp.id WHERE fa.to_user_id=1 AND pp.is_foundation=1 GROUP BY fa.from_user_id) ORDER BY id DESC LIMIT 0, 9999999999;
+----+--------------------+-------+--------+-----------------------+------------+---------+--------------------+------+----------------------------------------------+
| id | select_type        | table | type   | possible_keys         | key        | key_len | ref                | rows | Extra                                        |
+----+--------------------+-------+--------+-----------------------+------------+---------+--------------------+------+----------------------------------------------+
|  1 | PRIMARY            | au    | index  | NULL                  | PRIMARY    | 4       | NULL               | 2272 | Using where                                  |
|  2 | DEPENDENT SUBQUERY | fa    | ref    | to_user_id,persona_id | to_user_id | 4       | const              |  396 | Using where; Using temporary; Using filesort |
|  2 | DEPENDENT SUBQUERY | pp    | eq_ref | PRIMARY               | PRIMARY    | 4       | kjdb.fa.persona_id |    1 | Using where                                  |
+----+--------------------+-------+--------+-----------------------+------------+---------+--------------------+------+----------------------------------------------+
3 rows in set (0.00 sec)

最佳答案

输出中的 key 列表示 MySQL 正在使用的索引。

是的,查询使用索引。

您可以在您正在运行的 MySQL 版本的 MySQL 文档中阅读更多关于 EXPLAIN 输出的信息。例如,如果您运行的是 MySQL 5.1,请阅读 http://dev.mysql.com/doc/refman/5.1/en/explain-output.html .

关于mysql - 这个查询在 MySQL 中使用索引吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11489815/

相关文章:

MYSQL防止特定表字段重复

mysql - 为什么 Mysql 决定在 Order By 子句中指定的列上使用索引,而该索引不存在于 where 子句中?

c# - Elasticsearch C# NEST IndexMany child

php - 如何让我的服务器与 iPhone 应用程序一起工作?

mysql - 具有 3 个外键的表,在 JPA 中映射

c# - 在其他机器上访问数据库

php - 无法通过 PHP 将数据添加到我的 MySQL 数据库

mysql - 删除加入中不存在的记录

Python 列表索引还是追加?

PHP 破坏了我的代码