Mysql索引详解

Posted 风吹头蛋凉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql索引详解相关的知识,希望对你有一定的参考价值。

mysql索引详解

接触web开发,多多少少会被问及到Mysql的索引,掌握好Mysql理论知识,可以更好的帮助我们理解数据库。

索引是什么?

通俗的讲,就是一本字典的目录,方便我们快捷的找到数据。但是这是一般的理解,但作为程序员必须要知道其原理是什么:索引是帮助Mysql高效获取数据的数据结构,记住是数据结构。常见的索引结构有: B树, B+树和Hash。在数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这样就可以在数据结构的基础上实现高级查找算法,这种数据结构就是索引。可以理解为排好序的快速查找数据结构

索引的优点

  • 提高数据检索的效率,降低数据库的IO成本,这也是主要的原因
  • 通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗
  • 加快查询速度

索引的缺点

  • 索引也是一张表,保存了主键与索引字段,并指向实体表的记录,索引索引列也会占用磁盘空间。
  • 虽然索引大大提高了查询速度,同时也会降低更新表的速度,如对表进行insert,update和delete,Mysql不仅要保存数据,还要保存一下索引文件每次更新数据,索引文件也会更新索引文件,占用系统资源

什么情况下需要索引

  • 频繁作为查询条件的字段应该创建索引
  • 查询中与其他表关联的字段,外键关系建立索引
  • 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度
  • 查询中统计或者分组字段

哪些情况下不适合索引

  • 表记录太小,这个时候索引起不到什么作用
  • 经常增删改的表,前面我们说过,增删改同时会修改索引文件
  • 数据重复的表,为它建立索引就没有太大的实际效果

如何使用

注意主键会自动建立唯一索引

创建索引的方法:

1、创建索引,例如 create index <索引的名字> on table_name (列的列表);
2、修改表,例如 alter table table_name add index[索引的名字] (列的列表);
3、创建表的时候指定索引,例如create table table_name ( […], INDEX [索引的名字] (列的列表) );

查看表中索引的方法:
show index from table_name; //查看索引

索引的类型及创建例子:
1.PRIMARY KEY (主键索引)
mysql> alter table table_name add primary key (name)

2.UNIQUE 或 UNIQUE KEY (唯一索引)
mysql> alter table table_name add unique (column)

3.FULLTEXT (全文索引)
mysql> alter table table_name add fulltext (column)

4.INDEX (普通索引)
mysql> alter table table_name add index index_name (column` )

5.多列索引
mysql> alter tabletable_nameadd index index_name (column1,column2,column3` )

以上是关于Mysql索引详解的主要内容,如果未能解决你的问题,请参考以下文章

mysql索引数据结构详解---mysql详解

MySQL 索引详解

MySQL索引与事务详解

MySQL 联合索引详解

详解MongoDB索引优化

MySQL索引操作命令详解