函数索引的妙用

来源:互联网 发布:php获取字符串长度函数 编辑:程序博客网 时间:2024/05/19 18:15

今天生产环境出现这么一个性能问题,简单的描述下:

有个学生表student ,有年级grate,系Mathematics,班级class,年龄age,姓名name,性别sex,这是个千万级的大表,其中grate+Mathematics建了组

合索引,因为资料录入的问题,班级,年龄,姓名,性别有空的情况,现在有个循环里sql出现了性能问题

select grant,Mathematics,namefrom studentwhere grant = 1and Mathematics = 'Department'and nvl(class,1)=1and nvl(age,20)=20and nvl(name,'aa')='aa'
查看执行计划,sql用到了grate+Mathematics索引,但是1+‘Department’的资料量有60多万,导致索引的效率很低,再加上要循环执行20万次,导致

程序运行了10个小时,这该怎么办了,其他字段都用了nvl函数,直接建索引也会因为nvl函数的使用而不会被执行计划采用。。。。。这时想到了函数索

引,因grate+Mathematics+name可以将数据量锁定到很小的范围,这样不就快了嘛!!!于是我们建了grate+Mathematics+nvl(name,'aa')函数索引

一下子就解决这个办法,执行时间从10小时缩短到不到1个小时!!!!

其实函数索引我们并不是不知道,只是有时候到了关键时候却不知道使用,说到底还是经验的问题,最后用一句话来总结:

纸上得来终觉浅,绝知此事要躬行

0 0
原创粉丝点击