正确理解MySQL中的列索引和列索引
复制代码代码如下所示:
创建表(测试)
id不是空的,
last_name char(30)不为空,
first_name char(30)不为空,
主键(id),
指标名称(last_name,first_name)
);
上面创建的实际上是一个多列索引,创建列索引的代码如下所示:
复制代码代码如下所示:
创建表(测试)
id不是空的,
last_name char(30)不为空,
first_name char(30)不为空,
主键(id),
指标名称(last_name),
index_2名称(first_name)
);
多个列的索引可以被视为一个包含的链接索引列值的价值创造的价值排序的数组。当条件的查询语句包含last_name和first_name,例如:
复制代码代码如下所示:
SELECT * FROM测试,last_name = 'kun'and first_name =李';
SQL先滤掉last_name合格记录的基础上,first_name过滤。如果我们要创建MySQL的治疗last_name和first_name两列的指标是不一样的,它会选择一个搜索最严格的指标,可以理解为指数已经找回最强的能力,另一个不在使用,这种效果是不好的列的索引。
但是,多列索引的使用也是必需的,下面的查询语句形式可以利用多列索引:
复制代码代码如下所示:
SELECT * FROM测试,last_name = 'widenius;
SELECT * FROM测试,last_name = 'widenius'and first_name = 'michael;
SELECT * FROM测试,last_name = 'widenius'and(first_name = 'michael或first_name = 'monty);
SELECT * FROM测试,last_name = 'widenius'and first_name > =我和first_name<n;
下面的查询语句形式不用于索引的多个列:
复制代码代码如下所示:
SELECT * FROM测试,first_name = 'michael;
SELECT * FROM测试,last_name = 'widenius'or first_name = 'michael;
多栏索引比率对每一列单独索引更有利,因为索引越多,占用的磁盘空间就越多,更新数据时速度也会慢一些。
除建立多栏索引外,还应注意顺序,严格的指标应放在前面,这样筛选的力度会更大,效率更高。