只能是主键列或者唯一二级索引列与一个常数进行等值比较时才生效。---如果主键索引或者唯一二级索引的索引列由多个列构成,则只有在索引列中的每一个列都与常数进行比较时,const访问才有效。
- //假设有主键 id 和唯一二级索引 unkey1
- select * from table where id = 1
- select * from table where unkey1 = 'XXX'
- //这条语句不会是const访问方式,因为对于唯一二级索引来讲,可以有多个null值
- select * from table where unique = null
搜索条件为普通二级索引列与常数进行等值比较,形成的扫描区间为单点扫描区间,采用二级索引来执行查询。---普通的二级索引列并不限制索引列的唯一性
select * from table where key = 'xxx'
- //假设有联合索引 k1,k2,k3
- select * from table where k1 = 'XXX' and k2 = 'XXX'
- select * from table where k1 = 'XXX' and k2 = 'XXX'
- select * from table where k1 = 'XXX' and k2 = 'XXX' and k3 = 'XXX'
不仅可以找出某个二级索引的值等于某个常数的记录,而且还想把该列中值为NULL的记录也找出来。
select * from table where key1 = 'XXX' OR key1 IS NULL
执行索引查询时,对应的扫描区间为若干个单点扫描区间或者范围扫描区间。
select * from table where key1 in (38,324) or (key2 >=38 and key2 < 55)
直接扫描全部记录的二级索引记录。---->例如覆盖索引,不用回表
- //假设有联合索引 k1,k2,k3
- SELECT id,k1,k2,k3 from table where k2 = 'XXX'
SELECT * FROM table ORDER BY id;