度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1207|回复: 7
打印 上一主题 下一主题

[分享] Oracle数据库Where条件执行顺序

[复制链接]

348

主题

3572

帖子

9317

积分

论坛元老

Rank: 8Rank: 8

积分
9317
跳转到指定楼层
楼主
发表于 2020-5-30 02:11:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

作为时常与数据库打交道的开发人员来说,写SQL必须必须要遵循以下几点的原则:

1.ORACLE采用自下而上的顺序解析WHERE子句

根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.

例如:

(低效)

SELECT … FROM EMP E WHERE SAL > 50000 AND JOB = ‘MANAGER’ AND 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO);

(高效)

SELECT … FROM EMP E WHERE 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO) AND SAL > 50000 AND JOB = ‘MANAGER’;

2.SELECT子句中避免使用’*’

当在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘*’ 是一个方便的方法.可是,这是一个非常低效的方法. 实际上,ORACLE在解析的过程中, 会将’*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间.

3.使用表的别名(Alias)

当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误.

注:Column歧义指的是由于SQL中不同的表具有相同的Column名,当SQL语句中出现这个Column时,SQL解析器无法判断这个Column的归属。

Oracle数据库中还涉及到更多的语句条件,本文就为大家介绍Where条件执行顺序,大家好可以去了解更多的Oracle数据库语句条件,希望上文中介绍的内容对大家能够有所帮助。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

348

主题

3572

帖子

9317

积分

论坛元老

Rank: 8Rank: 8

积分
9317
沙发
 楼主| 发表于 2020-5-30 02:13:59 | 只看该作者
严谨的语法才能写出执行效率更高的语句

点评

是呢,楼主好智商!  详情 回复 发表于 2020-5-30 16:23
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
板凳
发表于 2020-5-30 16:23:05 | 只看该作者
万望 发表于 2015-12-31 02:13
严谨的语法才能写出执行效率更高的语句

是呢,楼主好智商!
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
地板
发表于 2020-5-30 16:26:45 | 只看该作者
一切为了提高效率
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
5#
发表于 2020-5-30 17:13:22 | 只看该作者
陈晓龙 发表于 2015-12-31 16:23
是呢,楼主好智商!


回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
6#
发表于 2020-6-4 13:56:48 | 只看该作者
用* 确实效率低!
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9317

积分

论坛元老

Rank: 8Rank: 8

积分
9317
7#
 楼主| 发表于 2020-6-4 15:59:37 | 只看该作者
陈晓龙 发表于 2016-1-4 13:56
用* 确实效率低!

若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

198

主题

1313

帖子

3782

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3782
8#
发表于 2020-6-4 16:36:21 | 只看该作者
写sql现在就是要考虑到性能了。能写出性能好的sql,需要有扎实的基本功。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-17 00:28 , Processed in 0.187539 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表