网站开发所需经费/百度搜索排名怎么靠前

   日期:2024-12-27    作者:liushibing2012 移动:http://mip.riyuangf.com/mobile/quote/70428.html

创建索引是一个经久不衰的话题,网上关于索引的使用方式与建议的资料比比皆是,其表述的意思在一定程度上也是大同小异。当然,作为这么一个经典的话题,要确切说清楚怎样用才是好的,那是不容易的,此处就本人一些使用过程中的积累做一些概述,有不足之处,还望多多指正。

网站开发所需经费/百度搜索排名怎么靠前

1、较频繁的作为查询条件的字段应该创建索引.

2、唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件

唯一性太差的字段:如状态字段,类型字段等。这些字段即使创建了单独的索引,MySQL Query Optimizer大多数也不会选择使用,如果什么时候选择了这种索引,可能会带来极大的性能问题。由于索引字段中每个值都含有大量的记录,那么存储引擎在根据索引访问数据的时候会带来大量的随机IO,甚至有时候可能还好出现大量的重复IO

       3、更新非常频繁的字段不适合创建索引

更新字段数据,同时还要更新索引的数据,以确保索引信息是准确的,这会增加IO访问量较大的增加,不仅仅影响更新query的响应时间,还会影响真个存储系统的资源消耗,加大存储系统的负责。


单一索引还是复合索引

对于多个where条件的数据,组合索引会比单一索引的查询效率要高,因为通过单一索引所能过滤的数据并不完整,和通过组合索引相比,存储引擎需要访问更多的记录。但是组合索引在多个字段中存在,更新的频率会带来一定性能消耗。

       对于建立多个单键索引,MYSQL Query  Optimizer大多数时候只会选择一个单键值的索引,然后放弃其他索引。即使他选择了同时利用两个或者更多的索引通过INDEX_MERGE来优化查询,可能所收到的效果并不会比选择其中某一个单键值索引高效。

因为如果选择了INDEX_MERGE来优化查询,就需要访问多个索引,同时还要将通过访问到的几个索引进行merge操作,所带来的成本可能反而会比选择其中一个最有效的索引来完成查询更高。

在创建组合索引并不是说将查询条件中所有字段放在一个索引中,我们还应该尽量让一个索引被多个query语句使用,尽量减少同一个表上面索引的数量,减少因为数据更新所带来的索引更新成本。同时还可以减少因为索引所带来的存储空间的消耗。


大多数场景下比较适合

1、对于单键索引,尽量选择针对当前query过滤性更好的索引

2、在选择组合索引的时候,当前query中过滤性最好的字段在索引字段顺序中排列越靠前越好

3、在选择组合索引的时候,尽量选择可以能够包含当前query的where子句中更多字段索引

4、尽可能通过分析统计信息和调整query的写法来达到选择合适索引的目的而减少通过使用Hint人为控制索引的选择,因为这会是后期的维护成本增加,同时增加维护所带来的潜在风险。


建议


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号