mysql之索引类型

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.效率高索引列越多,通过索引筛选出的数据越少。效率越高

你可能感兴趣的:(面试)