首页 数据库 mysql教程 Oracle 性能优化

Oracle 性能优化

Jun 07, 2016 pm 03:38 PM
oracle select 优化 使用 性能 语句 避免

1、在select语句中避免使用 “*” 2、尽可能减小记录集行数 限制记录集获取到的记录行数同样可以缩短语句执行时间,提高查询效率。 SELECT USER_NAME, ADDRESS, LOGIN_ADTE FROM LOG_EVENT WHERE ROWNUM = 100 ORDER BY LOGON_DATE DESC; 3、使用ROWID 高效

1、在select语句中避免使用 “*”

2、尽可能减小记录集行数

         限制记录集获取到的记录行数同样可以缩短语句执行时间,提高查询效率。

         SELECT USER_NAME, ADDRESS, LOGIN_ADTE

FROM LOG_EVENT

WHERE ROWNUM

3、使用ROWID 高效删除重复数据

         在重复的记录中,可能所有列的内容都相同,但是ROWID 不会重复。

         DELETE FROM STU S

WHERE S.ROWID > (SELECT MIN(T.ROWID)

FROM STU T

WHERE T.SNO = S.SNO);

4、使用TRUNCATE 替代DELETE删除记录

5、高效统计记录行数(实际应用中并没有使用价值)

         使用USER_TABLES 视图查询记录行数

         SELECT TABLE_NAME, NUM_ROWS

         FROM USER_TABLES

         WHERE TABLE_NAME = ‘STU’

         补充:USER_TABLES 视图中保存了Oracle的所有用户表基本信息,包括表空间、状态、缓存等。

6、尽量多使用COMMIT

         执行COMMIT 语句后能释放的资源主要包括:

l  回滚段上用于回复数据的信息

l  被程序语句获取的锁

l  REDO LOG BUFFER 中的空间

l  Oracle 为管理上述3 种资源的内部花销

7、避免使用HAVING 语句

         HAVING 语句只会在检索出所有记录之后才对结果集进行过滤。若能通过WHERE 子句限制查询的数目,可以减少这方面的开销。

8、用EXISTS 替代IN 谓词

         带有EXISTS 谓词的子查询不返回任何实际数据,只产生逻辑真值TRUE 或逻辑假值FALSE。

9、使用 “>=” 代替 “>” 运算符

10、避免在SELECT 子句中使用DISTINCT 关键字

         补充:消除重复记录可以通过子查询、GROUPBY 等其他方式实现,对于大数据来说,尽量避免使用DISTINCT。

11、用索引提高查询效率

12、避免在索引列上进行运算

         在索引列上进行运算,将导致索引失效。

13、在索引列上使用UNION替代OR

         在SELECT 语句中对索引列进行OR操作,此时索引将不会被引用。对索引列使用OR 运算符将造成全表扫描。

         补充:使用UNION 代替OR 操作规则只针对多个索引列有效,如果有的列没有索引,检索效率可能反而会因为没有选择OR 而降低。

14、避免在索引列上使用ISNULL 或 IS NOT NULL 条件

         对于Oracle 索引来说,如果一个索引列的某个值为空,该值将不存在于索引列中。

15、使用WHERE 子句优化GROUP BY (内容同7)

         使用WHERE 子句实现部分HAVING 子句的功能。

16、处理预定义异常

 

17、处理自定义异常

 

本内容摘自《Oracle 数据库编程经典300例》

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

oracle打不开怎么办 oracle打不开怎么办 Apr 11, 2025 pm 10:06 PM

Oracle 打不开的解决办法包括:1. 启动数据库服务;2. 启动监听器;3. 检查端口冲突;4. 正确设置环境变量;5. 确保防火墙或防病毒软件未阻止连接;6. 检查服务器是否已关闭;7. 使用 RMAN 恢复损坏的文件;8. 检查 TNS 服务名称是否正确;9. 检查网络连接;10. 重新安装 Oracle 软件。

oracle游标关闭怎么解决 oracle游标关闭怎么解决 Apr 11, 2025 pm 10:18 PM

解决 Oracle 游标关闭问题的方法包括:使用 CLOSE 语句显式关闭游标。在 FOR UPDATE 子句中声明游标,使其在作用域结束后自动关闭。在 USING 子句中声明游标,使其在关联的 PL/SQL 变量关闭时自动关闭。使用异常处理确保在任何异常情况下关闭游标。使用连接池自动关闭游标。禁用自动提交,延迟游标关闭。

oracle数据库如何分页 oracle数据库如何分页 Apr 11, 2025 pm 08:42 PM

Oracle 数据库分页利用 ROWNUM 伪列或 FETCH 语句实现:ROWNUM 伪列用于通过行号过滤结果,适用于复杂查询。FETCH 语句用于获取指定数量的第一行,适用于简单查询。

oracle怎么循环创建游标 oracle怎么循环创建游标 Apr 12, 2025 am 06:18 AM

Oracle 中,FOR LOOP 循环可动态创建游标, 步骤为:1. 定义游标类型;2. 创建循环;3. 动态创建游标;4. 执行游标;5. 关闭游标。示例:可循环创建游标,显示前 10 名员工姓名和工资。

oracle数据库怎么停止 oracle数据库怎么停止 Apr 12, 2025 am 06:12 AM

要停止 Oracle 数据库,请执行以下步骤:1. 连接到数据库;2. 优雅关机数据库(shutdown immediate);3. 完全关机数据库(shutdown abort)。

oracle动态sql怎么创建 oracle动态sql怎么创建 Apr 12, 2025 am 06:06 AM

可以通过使用 Oracle 的动态 SQL 来根据运行时输入创建和执行 SQL 语句。步骤包括:准备一个空字符串变量来存储动态生成的 SQL 语句。使用 EXECUTE IMMEDIATE 或 PREPARE 语句编译和执行动态 SQL 语句。使用 bind 变量传递用户输入或其他动态值给动态 SQL。使用 EXECUTE IMMEDIATE 或 EXECUTE 执行动态 SQL 语句。

oracle awr报告怎么看 oracle awr报告怎么看 Apr 11, 2025 pm 09:45 PM

AWR 报告是显示数据库性能和活动快照的报告,解读步骤包括:识别活动快照的日期和时间。查看活动、资源消耗的概览。分析会话活动,找出会话类型、资源消耗和等待事件。查找潜在性能瓶颈,如缓慢的 SQL 语句、资源争用和 I/O 问题。查看等待事件,识别并解决它们以提高性能。分析闩锁和内存使用模式,以识别导致性能问题的内存问题。

oracle怎么打开数据库 oracle怎么打开数据库 Apr 11, 2025 pm 10:51 PM

打开 Oracle 数据库的步骤如下:打开 Oracle 数据库客户端连接到数据库服务器:connect username/password@servername使用 SQLPLUS 命令打开数据库:SQLPLUS

See all articles