墙体裂缝怎么处理,留言代码爱情,旅游网站
高强度训练第十九天总结:
为什么要用索引
- 通过创建唯一性索引可以保证数据库表中每一行数据的唯一性
- 可以大大加快数据的检索速度(大大减少了检索的数据量),这也是创建索引最主要的原因。
- 帮助服务器避免排序和临时表
- 将随机io变为顺序io
- 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
索引这么多优点,为什么不对表中的每一个列创建一个索引呢?
- 当表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据维护的速度。
- 索引修啊占物理空间,除了数据表占数据空间之外,每一个索引还需要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
- 创建索引和维护索引需要耗费时间,这种时间随着数据量的增加而增加。
索引是如何提高查询速度的?
使用索引的注意事项
- 在经常需要搜索的列上,可以加快搜索的速度
- 在经常使用where子句的列上面创建索引,加快条件的判断速度。
- 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询的时间
- 对于中到大型表索引都是非常有效的,但是特大型表的话维护开销会很大,不适合建索引
- 在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度
- 避免where子句中对字段施加函数,这会造成无法命中索引
- 在使用innodb时使用与业务无关的自增主键为主键,即使用逻辑主键,而不要使用业务主键。
- 将打算加索引的列设置为not null,否则将导致引擎放弃使用索引而进行全表扫描
- 删除长期未使用的索引,不用的索引的存在会造成不必要的性能损耗mysql5.7可以通过查询sys库中的chema_unused_indexes视图来查询哪些索引从未被使用
- 在使用limit offset 查询缓慢时,可以借助索引来提高性能。
mysql 索引主要使用的俩种数据结构
- 哈希索引 对于哈希索引来说,底层的数据结构就是hash表,因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快;其余大部分场景建议选择btree索引。
- btree索引 mysql的btree索引使用的时b树中的b+tree,但是对于主要的俩种存储索引myisam和innodb的实现方式是不同的
myisam和innodb实现索引方式的区别
myisam:b+tree叶结点的data域存放的是数据记录的地址。在索引检索的时候,首先按照b+treee搜索算法搜索索引,如果指定的key存在,则取出其data域值,然后以data域的值为地址读取相应的数据记录。这被称为“非聚簇索引”
innodb:其数据文件本身就是索引文件。相比myisam,索引文件和数据文件是分离的,其表数据文件本身就是按b+tree组织的一个索引结构,树的叶结点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此innodb表数据库文件本身就是主索引。被称为聚簇索引。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!!
点击进行留言回复
相关文章:
-
-
-
-
-
MySQL日期加减函数详解
1. addtime() 为日期加上指定秒数select addtime(now(),1); -- 加1秒2. adddate() 有两种用法,第二个参数直...
[阅读全文]
-
mysql累加计算实现方法详解
本文实例讲述了mysql累加计算。分享给大家供大家参考,具体如下:前言接了一个需求,产品想分析一下用户增长的曲线。也就是某个时间段的每日总人数列表。好对近期活动...
[阅读全文]
-
-
MySQL分区表的最佳实践指南
前言:分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表。但是对于应用程序来讲,分区的表和没有分区的表是一样的。换句话来讲,分区对于应用...
[阅读全文]
-
-
-
网友评论