您的位置:首页 > 数据库

数据库字段值相似性高导致的索引问题

2018-02-27 13:32 218 查看
问题描述:表A是数据对接表,有800万左右的数据量,对字段a1加了normal索引,发现查询性能问题,分析后发现查询不走索引,强制走索引查询性能依然很差。分析后发现a1字段值类似递增的序列号,因此导致每行记录该字段的值都相差不大,虽然加了索引,但是索引树的层级将会增加很快,导致索引效果很不理想。这里提出几种解决方案:方案1:将A表改造成分区表,查询时定位到分区,通过缩小数据范围来提升查询性能。但是这种方式效果仍然不理想,因为索引依然不起作用,且800万数据量也没有必要使用分区表。方案2:在A表中新增加一个字段a1_md5,用来保存a1字段的md5值,对a1_md5创建索引,查询时传入条件使用md5函数进行运算。这种方式降低了索引树的层级,使得查询性能得到提升。方案3:创建函数索引 create index idx_A_a1_md5 on A(md5(a1)); 思路和方案2是一样的,都是降低索引树的层级来提升查询性能。但这种方案避免了新增字段,减少了代码修改量,节省了磁盘空间,最终公司也是采用了这种方案。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息