索引类型 用途
Fulltext(全文索引) 专门针对 CHAR、VARCHAR、TEXT 等文本字段,非常适合博客文章内容、商品描述、学生表中的长文本名称,用法:WHERE MATCH(name) AGAINST(‘三’)
Normal(普通索引) 最基本、最常见的索引类型,没有任何附加的限制条件,支持=、>、< 以及 LIKE ‘abc%’(前缀匹配)
Spatial(空间索引) 有严格的限制,地图应用、外卖系统中的“查找附近 3 公里内的餐厅”等处理地理位置信息,不常用
Unique(唯一索引) 该索引列的值必须是唯一的,不允许出现重复数据,但允许有空值(NULL)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

EXPLAIN SELECT id,NAME FROM `student` where   SUBSTR(name, 1, 2) = '张三'   -- 不会走,因为对name这一行使用了函数,还有WHERE phone = 138这种,如果phone在数据库是字符串类型,没有加上单引号,也是作为隐式类型转换,本质也是函数操作,如果做了计算也不会走
EXPLAIN SELECT id,NAME FROM `student` where name  = '张三'  or  xuexiao='北京大学' -- 不会走,因为对xuexiao这一行没有加索引,使用or条件的时候一个列没有创建,就不会走
EXPLAIN SELECT id,NAME FROM `student` where   name != '张三'  -- 不会走,<>与IS NOT NULL  同样不会,索引适合查找“具体的值”或“范围”,查找“除了张三以外的所有人”,"排除空值" 都是意味着要扫描索引树的大部分节点,优化器通常认为直接扫表更快

更多推荐