各位已经工作的朋友,oracle中的函数索引排序?一般在什么项目中会用到?

解决方案 »

  1.   

    一个比较常见的应用:正对姓名的查询,估计会用到的【转自itpub】:
    在某医院的上线过程中针对病人基本信息这张表的数据较多的问题(300W行),对其进行了分区(以时间分区)。
    后续可能对其他的较大的表也实现分区,这样可以提高性能。
    目前检验也有一些表的数据较大,也可以尝试使用分区的方式来提高性能。针对其姓名查重(即找出已建档的同名或类似名字的病人)使用了 col like '%常量' 方式的SQL问题,这样的like是不能
    使用Oracle的索引的,效率很低,在测试时一个查询需要2.8s。为此我们该col上建立了一个函数索引 REVERSE(col)
    create index IDX_GY_BINGRENXX_XMREVERSE on GY_BINGRENXX (REVERSE(XINGMINGQP))
    然后再查询时使用 REVERSE(col)like REVERSE('%常量')的方式,即可以使用索引,同样的测试只需0.14s,
    大大提高了此查询的效率。同时如果查询条件中对某字段使用了函数,如果需要使用索引,也可以在此字段上建立函数索引。