课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习计算机编程开发技术相关知识,而本文我们就通过案例分享来了解一下,数据库架构索引类型与优缺点分享。
索引类型
先是索引的特点以及作用:
索引的目的是为了提升数据的效率。
对于ORM框架来说索引的使用至关重要,但是ORM的优化往往难以顾及所有业务情况,后续被逐渐废弃。
不同的索引类型适用于不同的场景。
索引关键在于减少数据需要扫描的量,同时避免服务器内部对内容排序和临时表(因为临时表会索引失效),随机IO转顺序IO等特点
下面介绍Mysql相关的索引类型:
哈希索引:哈希索引适合全值匹配和精确查找,查询的速度非常快在MySQL中只有memory存储引擎显式支持此索引,memory还支持非哈希索引的,是哈希索引设计里面比较特殊的。
空间索引:空间索引是myisam表支持,主要用作地理数据存储,这里包含一个叫做GIS的玩意,但是GIS在Postgre中使用比MySQL要出色很多,所以mysql中空间索引是无关紧要的东西。
全文索引:全文索引也是myisam独有支持的一种索引类型。适合使用的场景为全值匹配的场景和关键字查询,对于大文本的关键字匹配可以有效处理。
聚簇索引:聚簇索引是innodb存储引擎的默认存储引擎。
前缀压缩索引:注意这个索引针对的是myisam存储引擎,目的是为了让索引放入内存中排序,,前缀压缩的方法是先保存索引块的一个值,然后在保存二个值,存储二个值类似(长度,索引值)的形式存放前缀索引。
当然索引也有下面的缺点:
对于非IO密集型应用,聚簇索引的优化无意义。
插入速度依赖于插入顺序,但是如果不是自增插入则需要optimizetable重新组织表。
更新代价非常高,因为BTree要保证顺序排序需要挪动数据页位置和指针。
主键数据插入过满数据页存在页分裂问题,行溢出会导致存储压力加大。
聚簇索引导致全表扫描变慢,页分裂导致数据问题等。
二级索引需要回表查询聚簇索引才能查询数据。
二级索引由于需要存储主键开销会更大,至少在InnoDb中维护一个二级索引的开销是挺大的。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。