索引概述

索引是数据库查询提高性能的最常用的工具。可以把索引类比成书的目录。索引类型:hash索引和btree索引。MyISAM 和 InnoDB默认的是btree索引。
参考1
参考2

Btree索引和hash索引的有缺点

结论是:btree要比hash 强大
Hash索引只能使用 = 或者 <=> 操作符比较,in ( ),
btree索引可以使用 >, < >=,<=,=,!=,<>,between ,in ,like ,但是不能用%开始

索引种类

主键索引,唯一索引,普通索引,全文索引(只有MyISAM引擎支持),组合索引,前缀索引

问题:聚合索引和非聚合索引的区别?
聚合索引要比非聚合索引快,一个表中只有一个聚合索引,他是在主键上的那个列。

创建索引
 Create [unique|fulltext|] index index_name on tab_name (col_name[(lenght)])

 Alter table tab_name add [unique|fulltext|] index index_name (col_name[(lenght)])
删除 索引
Drop index index_name on tab_name
查看 索引
 Show index from tab_name
检查sql语句中是索引是否有效
Explain  select.........  \G

索引使用基本原则

  • 最适合索引的列是出现在where字句中的列,或on 连接字句中列,而不是select 后面的列
  • 使用唯一索引,索引列的基数越大,索引的效果越好。也就是说,我们创建的索引的列可以跟大的程度的区分表中的数据。例如:把邮箱作为唯一索引,(不可把性别做索引)
  • 不可以过度的使用索引。不是索引越多越好,每个额外的索引都会占用额外的磁盘空间,并降低写性能,因为在你秀改表的时候,索引必须重新进行修改或者重构!
  • 使用短索引,如果对字符串进行索引的时候,应该指定一个长度,这个长度可以区分表中的数据还可以节省磁盘空间。
  • 适应左前缀原则,在创建n个列的索引时候,实际上创建了mysql可以使用的n个索引,多个索引列可以起到几个索引的作用,因为可利用索引中最左边的列来匹配行。
  • 对于innoDB存储引擎,要指定自己的主键,当一个表中的有几个列都是唯一的,都可以作为主键的时候,要选择最常作为条件列作为主键

你可能感兴趣的:(索引概述)