• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

MySql索引

武飞扬头像
fnfd
帮助1

索引是帮助MySQL效获取数据的数据结构.

排好序的快速查找的数据结构

数据库在存储数据本身之外,还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引.

索引原理

索引的目的在于提高查询效率,本质通过不断的缩小想要获取数据的范围拉力筛选出最终想要的结果,同时把随机的事件变成顺序的事件,有了这种机制,我们可以总是用同一种查找方法来锁定数据.借助索引,执行查询时不必扫描整个表就能够快速地找到所需要的数据.

索引优势

提高数据检索的效率,降低数据库的IO成本.

通过索引列对数据进行排序,降低数据排序的成本,降低了CPU消耗.

索引劣势

索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也要占用磁盘空间.

虽然索引大大提高了查询速度,同时却会降低更新表的速度,例如对表进行INSERT,UPDATE和DELETE,因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件,每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息.

什么情况下使用索引

主键 默认建立唯一索引

作为查询条件的列(where后)

作为外键的列,外键关系建立索引

排序的字段

分组的字段

什么情况下不需要使用索引

表记录太少

频繁增删改的表,查询较少的表,给需要的类增加索引

where条件中使用不到的列

数据重复且平均的列(如性别)

索引数据结构

B 树(InnoDB存储引擎就是用B 树实现索引).

排好序的一个结点可以存储多个数据结构

非叶子结点不存储数据,值存储索引,可以放更多的索引.

数据记录都存放在叶子结点中

所有叶子结点之间都有一个链指针.

B 树通过对数据进行排序可以

索引分类

主键索引:设定为主键后数据库会自动建立索引.

ALTER TABLE 表名 add PRIMARY KEY 表名(列名);

删除主键索引:

ALTER TABLE 表名 drop PRIMARY KEY;

单值索引:即一个索引只包含单个列,一个表可以有多个单列索引.

创建单值索引:CREATE INDEX 索引名 ON 表名(列名);

DROP INDEX 索引名;

唯一索引:索引列的值必须唯一,允许为null

CREATE UNIQUE INDEX 索引名 ON 表名(列名);

DROP INDEX 索引名 ON 表名;

组合索引(复合索引):即一个索引包含多个列,在数据库操作期间,复合索引比单值索引所需要的开销更小(对于相同的多个列建立索引),当表的行数远大于索引列的数目时可以使用复合索引.

创建复合索引:CREATE INDEX 索引名 ON 表名(列1,列2)

DROP INDEX 列名 ON 表名;

组合索引最左前缀原则

例如表中有a,b,c三列,为a,b两列创建组合索引,那么在使用时需要满足最左侧索引原则.在使用组合索引的列作为条件时,必须要出现最左侧列为条件,否则组合索引不生效.

全文索引

需要模糊查询时,一般索引无效,这时候就可以使用全文索引了.

CREATE FULLTEXT INDEX索引名 ON 表名(字段名)WITH PARSER ngram;

Select 结构 from 表名 where match(列名) AGAINST(搜索词).

查看索引

SHOW INDEX FROM 表名;

聚簇索引和非聚簇索引

找到了索引就找到了需要的数据,那么这个索引就是聚簇索引,所以主键就是聚簇索引.

索引的存储和数据的存储是分离的,也就是说找到了索引但没找到数据,需要根据索引上的值(主键),再次回表查询,非聚簇索引也叫辅助索引.

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggfigc
系列文章
更多 icon
同类精品
更多 icon
继续加载