当我们在创建好一个数据库表时,虽然已经同时创建好各个表的索引,但却不知道该索引的执行效率如何?是否是索引方案中最有效的一种?

MySQL提供了一个内建的SQL命令来帮助我们完成这个任务,这就是EXPLAIN命令。EXPLAIN命令一般语法是:EXPLAIN。例子如下:
EXPLAIN SELECT peopleid FROM people WHERE firstname=’Mike’ AND lastname=’Sullivan’ AND age=’17’;

这个命令将返回分析结果,我们来看看这些数据是什么意思:

table:这是表的名字。

type: 连接操作的类型。如果EXPLAIN显示连接类型是“ALL”,而且你并不想从表里面选择出大多数记录,那么MySQL的操作效率将非常低,因为它要扫描整个表。你可以加入更多的索引来解决这个问题。

possible_keys:
可能可以利用的索引的名字。这里的索引名字是创建索引时指定的索引昵称;如果索引没有昵称,则默认显示的是索引中第一个列的名字。默认索引名字的含义往往不是很明显。

Key:
它显示了MySQL实际使用的索引的名字。如果它为空(或NULL),则MySQL不使用索引。

key_len:
索引中被使用部分的长度,以字节计。

ref:
它显示的是列的名字(或单词“const”),MySQL将根据这些列来选择行。

rows:
MySQL所认为的它在找到正确的结果之前必须扫描的记录数。显然,这里最理想的数字就是1。

Extra:
这里可能出现许多不同的选项,其中大多数将对查询产生负面影响。