zoukankan      html  css  js  c++  java
  • [性能调优]在PeopleSoft中使用函数索引

    那些没有在PeopleSoft系统遇到性能问题的人,特别是基于Oracle数据库的PeopleSoft,可能不知道基于函数的索引。

    根据定义,基于函数的索引是使用如下方法定义的:

    • 基于表达式,例如算术表达式或包含函数的表达式

    • 基于降序列(descending ordered column)

    然后还有一种叫做函数索引的的表达式,这些索引是包含在索引列周围的表达式的索引。他们在PeopleSoft中非常罕见,为了提高特定SQL语句的性能而创建。

    例如PS_NAMES表,有一个索引PS4NAMES中字段NAME_AC为主导列:

    SELECT * from PS_NAMES WHERE name_ac='CHENCHEN'

    可以看到上述查询语句走的是索引扫描代价是2。

    比如我不知道NAME_AC中存储的是大写的拼音还是小写的拼音,一般会用如下SQL语句来查询:

    SELECT * from PS_NAMES WHERE UPPER(name_ac)='CHENCHEN'

    如果加上UPPER就会走全表扫描,代价是5,显然更花费时间。

    添加函数索引到PS_NAMES表。

    CREATE INDEX PSZNAMES ON PS_NAMES (UPPER(NAME_AC));

    接下来再执行查看代价

    可以看到走的是索引扫描,代价是1.

    当您在表DBA_IND_COLUMNS中查看索引时,显示的类似是SYS_NC00033$,这是系统生生的列名,要找到真正的列名,要到表DBA_IND_EXPRESSIONS中的COLUMN_EXPRESSION列查看,如图:

    基于函数的索引只能通过数据库中创建,不能通过AD工具创建。

    我的公众号:

  • 相关阅读:
    Educational Codeforces Round 6
    Codeforces Round #373 (Div. 2)
    尺取法
    Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2)
    逆元(数论倒数)
    最大公约数gcd,最小公倍数lcm,扩展欧几里得
    hdu 6395 Sequence (分段矩阵快速幂)
    快速幂
    hdu 6432 Cyclic
    hdu 6397 charactor encoding
  • 原文地址:https://www.cnblogs.com/eason-liu/p/7136163.html
Copyright © 2011-2022 走看看