假设有一个名为 users 的表,其中包含 id、name 和 age 三个字段。现在需要查询年龄大于 18 岁的用户姓名。下面是一条简单的 SQL 语句:
SELECT name FROM users WHERE age > 18;
为了判断这条 SQL 语句是否使用了索引,可以使用 EXPLAIN 命令。该命令可以分析 SQL 语句的执行计划,并给出一个结果集的描述。下面是示例 SQL 语句和执行结果:
EXPLAIN SELECT name FROM users WHERE age > 18;
执行结果可能会类似如下:
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE users NULL ALL NULL NULL NULL NULL 10000 Using where
上述结果中,type 列表示查询的类型,如果值为 ALL,则表示该查询没有使用索引,否则表示使用了索引。在上述结果中,type 的值为 ALL,说明该查询没有使用索引。
如果想要让该查询使用索引,可以在 age 字段上添加一个索引,例如:
CREATE INDEX age_index ON users(age);
添加完索引后,再次执行上述 EXPLAIN 命令,结果可能会类似如下:
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE users NULL range age_index age_index 5 NULL 5000 Using where; Using index
上述结果中,type 的值为 range,说明该查询使用了范围扫描,同时 Extra 列中出现了 Using index,说明该查询使用了索引。这样,就可以判断该索引是否生效。