1.normal(普通索引):是普通索引,没有限制。
2.UNIQUE(唯一索引):是唯一的,不允许重复的索引。索引列的值必须唯一,但是允许为空值。
3.FULLTEXT(全文索引):是全文搜索的索引。主要用来查找文本(索引列的值)中的关键字
4.spatial(空间索引):是对空间数据类型的字段建立的索引。MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。只能在存储引擎为MYISAM的表中创建
5.主键索引:是一种特殊的唯一索引。一个表只能有一个主键,不允许是空值。
一般是在创建表的时就创建主键索引:
CREATE TABLE table_name (
id int(10) NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
PRIMARY KEY (id)
);
6.综合索引(组合索引):只有在查询条件中使用了创建索引时的第一个字段,索引就会被使用,使用组合索引时,遵循最左原则。
最左原则:在检索数据时从联合索引的最左边开始匹配。例如:
如果有一个3列索引(col1,col2,col3),实际上已经建立了三个联合索引(col1)、(col1,col2)、(col1,col2,col3)。
注意:
SELECT * FROM test WHERE col1=“1” AND clo2=“2”;
SELECT * FROM test WHERE col2=“2” AND clo1=“1”;
这两种写法都用到了索引,但是第一种写法的执行效率最高。
SELECT * FROM test WHERE col2=“2”我测试的是没有触发索引,而是进行了全表扫描。
组合索引的优点:
1.减少开销。(写操作的开销和磁盘空间的开销)
2.覆盖索引。对联合索引(col1,col2,col3),如果有如下的sql: select col1,col2,col3 from test where col1=1 and col2=2。那么MySQL可以直接通过遍历索引取得数据,减少io操作,提升性能。
3.效率高。索引列越多,通过索引筛选出的数据越少。效率越高
本文介绍了MySQL的多种索引类型,包括普通索引、唯一索引、全文索引、空间索引、主键索引和综合索引。详细说明了综合索引的最左原则,还提及使用索引可减少开销、实现覆盖索引、提高效率等优点。

2829

被折叠的 条评论
为什么被折叠?



