[性能调优]在PeopleSoft中使用函数索引

Posted 萧闹闹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[性能调优]在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工具创建。

我的公众号:

以上是关于[性能调优]在PeopleSoft中使用函数索引的主要内容,如果未能解决你的问题,请参考以下文章

[性能调优]如何通过读PeopleSoft Trace文件来调优

MySQL 性能调优之索引

elasticsearch性能调优

Mysql索引性能调优

SQL性能调优策略

MySQL索引&存储引擎,从基础到性能测试和调优