用字段 mphone 为例,使用索引前(当前表中一共只有一万条数据):
使用索引后:
索引(Index)是帮助MySQL高效获取数据的数据结构。我们可以简单理解为:快速查找排好序的一种数据结构。Mysql索引主要有两种结构:B+Tree索引和Hash索引。我们平常所说的索引,如果没有特别指明,一般都是指B树结构组织的索引(B+Tree索引)通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。比如:查字典可以用偏旁或者拼音查字。
简单理解
从user表中查询mphone
用explain查看sql语句执行详情
explain SELECT mphone FROM `js_user`
创建索引
create index idx_mphone on js_user(mphone);
再用explain分析sql语句
id: SELECT识别符。这是SELECT的查询序列号
select_type: 表示这里的查询是简单的SELECT(不使用UNION或子查询)
table: 查询的表user
type: index该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小
possible_keys: 指出MySQL能使用哪个索引在该表中找到行
key: 显示MySQL实际决定使用的键(索引)。就是建立的idx_mphone
key_len: 显示MySQL决定使用的键长度
ref: 显示使用哪个列或常数与key一起从表中选择行。
rows: 显示MySQL认为它执行查询时必须检查的行数。多行之间的数据相乘可以估算要处理的行数。12385行
Extra:Using index从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息
建立索引会占用磁盘空间的索引文件。
删除索引: drop index idx_mphone on js_user;