MySQL索引的优点和缺点
MySQL索引的优点和缺点
通俗的来说,索引就相当于一个字典的目录,为了方便查找书中的内容,通过对内容建立索引形成目录,索引是一个文件,它是要占据物理内存的。
官方的来说索引它是一种数据结构,数据库索引是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据表中的数据。
优点:
(1)通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
(2)可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
(3)可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
(4)在使用分组和排序子句进行数据检索时,同时可以显著减少查询中分组和排序的时间。
缺点:
(1)创建索引和维护索引需要时间成本,这个成本随着数据量的增加而加大。
(2)创建索引和维护索引需要空间成本,每一条索引都要占据数据库的物理存储空间,数据量越大,占用及空间也越大(数据表占据的是数据库的数据空间)
(3)会降低表的增删改的效率,因为每次增删改索引需要进行动态维护,导致时间边长。
索引的使用场景
(1)选择唯一性索引:
唯一性索引的值是唯一的,可以更加速的通过该索引来确定某条记录。
就比如学生表中学生的学号是具有唯一性的字段,为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话可能会存在同名现象,从而降低查询速度。
(2)经常需要排序,分组,联合操作的字段建立索引:
经常需要 order by,group by ,distinct , union 等操作的字段,排序操作会浪费很多时间,为其建立索引可以有效地避免排序操作。
(3)常作为查询条件的字段建立索引:
如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度,为这样的字段建立索引,可以提高整个表的查询速度。
(4)限制索引的数目:
索引的数目不是越多越好,每个索引都需要占用磁盘空间,索引越多需要的磁盘空间就会越大。修改表的时候对索引的重构和更新都会很麻烦;索引越多更新表就会越浪费时间。
(5)尽量使用数据量少的索引:
索引的值越长查询的速度会越慢。例如一个char(100)类型的字段进行全文检索需要的时间比char(10)类型的字段需要的时间更多。
(6)删除不再使用或很少使用的索引:
表中的数据大量更新或者是数据的使用方式被改变后,原有的一些索引可能不在需要,数据库管理员应当定期找出这些索引,将他们删除,从而减少索引对更新操作的影响。
(7)尽量的扩展索引,不要新建索引:
比如表中已经有a 的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。
索引的分类
常见的索引类型有主键索引,唯一索引,普通索引,全文索引,联合索引
(1)主键索引,即主索引,根据主键建立索引,不允许重复,空值
ALTER TABLE ‘mydb’ ADD PRIMARY KEY pk_index(‘a’);
(2)唯一索引,用来建立索引的值必须是唯一的,允许空值。
ALTER TABLE ‘mydb’ ADD UNIQUE index_name(‘a’);
(3)普通索引:用表中的普通列构建的索引,没有任何限制
ALTER TABLE ‘mydb’ ADD INDEX index_name(‘a’);
(4)组合索引:用多个列组合构建的索引,这多个列中的值不允许有空值
ALTER TABLE ‘mydb’ ADD INDEX index_name(‘a’,‘a2’,‘a3’…);
MySQL索引的优点和缺点相关推荐
- MySQL 索引类别与索引使用指南
文章目录 概述 MySQL 索引类型 MySQL 索引方法 BTREE 方法 HASH 方法 主键构成的索引结构 主键索引的优点 主键索引的缺点 依赖顺序插入 更新代价高 索引使用指南 索引树回顾 索 ...
- MySQL - 索引的数据结构
目录 一.为什么使用索引 二.索引及其优缺点 1.索引概述 2.优点 3.缺点 三.InnoDB中索引的推演 1.索引之前的查找 在单页中查找 在多页中查找 2.设计索引 一个简单的索引设计方案 In ...
- Mysql—索引①:原理篇
目录 什么是索引? 索引的优点和缺点 数据页 什么是数据页 页与页之间的连接结构(双链表) 单页查找 多页查找 聚簇索引,二级索引(非聚簇索引.辅助索引) 聚簇索引 非聚簇索引 聚簇索引与非聚簇索引比 ...
- MySQL——索引及调优篇
一.索引的数据结构 1.1.为什么要使用索引 索引是存储引擎用于快速查找数据记录的一种数据结构,就好比一本教科书的目录部分,通过目录中找到对应文章的页码,便可快速定位到需要的文章.MySQL中也是一样 ...
- MySQL索引的设计、使用与优化
一.使用索引的优缺点 索引是数据库用来提高性能的最常用工具,所有的MySQL列都可以被索引,对相关的列进行索引是提高select性能的最佳途径.使用索引的优点和缺点如下: 优点: 快速访问数据表中的特 ...
- mysql索引空间太大_MySQL优化索引
1. MySQL如何使用索引 索引用于快速查找具有特定列值的行.如果没有索引,MySQL必须从第一行开始,然后遍历整个表以找到相关的行.表越大,花费越多.如果表中有相关列的索引,MySQL可以快速确 ...
- mysql索引教程_MySQL教程96-MySQL索引类型
索引的类型和存储引擎有关,每种存储引擎所支持的索引类型不一定完全相同.MySQL 索引可以从存储方式.逻辑角度和实际使用的角度来进行分类. 存储方式区分 根据存储方式的不同,MySQL 中常用的索引在 ...
- mysql 树形结构_再读MySQL索引-《高性能MySQL》索引手记
最近工作中经常和MySQL打交道,当数据量小的时候,不同查询方式以及是否使用索引并无大碍,当数据量随着业务的成长急剧加速时,索引的重要性不言而喻. 本篇文章以<高性能MySQL>中的索引章 ...
- MySQL索引背后的数据结构及算法原理【转】
http://blog.codinglabs.org/articles/theory-of-mysql-index.html MySQL索引背后的数据结构及算法原理[转] 摘要 本文以MySQL数据库 ...
最新文章
- Windows与VMware下的Linux文件共享方式总结
- 马哥linux2020博客,马哥linux学习(bash shell学习)
- jdbc版本怎么看_Jmeter(十三)-JDBC脚本开发
- matlab曲线拟合 最低点,Matlab曲线拟合 最小二乘法 polyfit【转】
- C# 结合 PInvoke 对接 IP 摄像头的笔记
- 双十一有“后悔药”了?淘宝88VIP将推出退货秒退款服务
- android调用web接口,Android调用WebService系列之请求调用
- Windows下的网络编程
- ST-Link驱动安装包 STM32 keil
- 《北京市住房租赁条例》
- id门禁卡复制到手机_使用iPhone解锁开门?手机复制门禁卡教程分享
- 有哪些比较基础的优质计算机书籍?
- 手机QQ邮箱可以发html邮件么,如何使用手机qq邮箱发送邮件
- 如何通俗地理解假设检验基本原理
- jsp主机与asp主机的区别和支持分析
- Ubuntu18.04grub增加console口输出
- 三招解决!电脑密码忘记了怎么办?新手都能学会
- 一个屌丝程序猿的人生(十六)
- Xposed 模块编写
- 马云控股“文化中国”暗藏啥玄机?