1 哪些地方要用到索引
只要设计到查询操作都会用到索引,如果不用索引的话,就要进行全表遍历了。
关于查询可以参考下面的博客:
https://www.cnblogs.com/whgk/p/6149009.html
2 mysql索引的种类及其创建命令
2.1 主键索引
一种特殊的唯一索引,不允许空值,因为主键本身就不允许空值。
ALTER TABLE <table_name> ADD PRIMARY KEY (<column_name>);
2.2 唯一索引
被索引的列的值必须是互异的,即必须是唯一的。
ALTER TABLE <table_name> ADD UNIQUE(<column_name>);
2.3 普通索引
最基本的索引,没有限制。
ALTER TABLE <table_name> ADD INDEX <index_name>(<column_name>);
2.4 全文索引
对文本数据建立全文索引,目的是进行关键字搜索,然后返回包含该关键字的行。
ALTER TABLE <table_name> ADD FULLTEXT (<column_name>);
2.5 联合索引
对多列创建索引,先对第一列创建索引,然后对于第一列相同的所有的行的第二列创建索引,依次类推,也就是说,以后面的列作为查询条件时,必须要建立在前面的列的基础上,单独使用后面的列作为查询条件时联合索引是失效的。
ALTER TABLE <table_name> ADD INDEX <index_name>(<column1_name>, <column2_name>);
3 mysql的两种索引结构
3.1 B+树索引
不光适合于单记录查询,也适合于范围查询,因为所有的记录都位于底层节点,并且是按照顺序使用链表连接存放的,这样的话,只要找到了返回中的第一个记录,然后遍历就找到了满足条件的所有记录。
3.2 hash索引
只适合单记录查询,因为各条记录都是被hash分散分布的。