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` )

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值