首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在哪里使用Oracle内置高级函数导致SELECT语句性能差?

在哪里使用Oracle内置高级函数导致SELECT语句性能差?
EN

Stack Overflow用户
提问于 2017-02-08 12:26:15
回答 1查看 6.2K关注 0票数 3

我们的Oracle数据库应用程序包含一个名为PERSON的表

此表包含一个名为PERSON_NAME的列

此外,我们在本专栏中有一个INDEX,以使用此列加快SELECT的速度。

因此,当我们使用以下SQL语句时,性能很好

代码语言:javascript
运行
复制
SELECT *
FROM PERSON
WHERE 1=1
AND PERSON_NAME = '  Yajli  '
;

但是在中,一些业务案例

我们需要通过PERSON_NAME搜索不区分大小写

因此,我们尝试遵循以下SQL语句

代码语言:javascript
运行
复制
SELECT *
FROM PERSON
WHERE 1=1
AND UPPER(PERSON_NAME) = UPPER('  YajLi  ')
;

但这会导致性能不佳,在本例中选择查询需要花费大量时间。

对于如何提高SELECT在这两种情况下的性能有帮助吗?

* PERSON_NAME搜索不区分大小写

* PERSON_NAME搜索是区分大小写的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-08 12:33:06

由于原始查询在PERSON_NAME上使用索引,因此您的相对性能会很差。但是,在应用函数时,Oracle不再使用索引。

如果这是您需要经常做的事情(如您建议的那样),那么您可以为该函数创建一个索引:

代码语言:javascript
运行
复制
CREATE INDEX idx_person_upper_personname ON PERSON(UPPER(PERSONNAME));

然后,当您在UPPER(PERSON)子句中使用函数WHERE时,Oracle将使用此索引。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42113106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档