一。SQL语言的使用
1.IN 操作符
用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。
但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:
ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。
由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了。
推荐方案:在业务密集的SQL当中尽量不采用IN操作符
2.NOT IN操作符
此操作是强列推荐不使用的,因为它不能应用表的索引。
推荐方案:用NOT EXISTS 或(外连接+判断为空)方案代替
3.<> 操作符(不等于)
不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。
推荐方案:用其它相同功能的操作运算代替,如
a<>0 改为 a>0 or a<0
a<>'' 改为 a>''
4.IS NULL 或IS NOT NULL操作(判断字段是否为空)
判断字段是否为空一般是不会应用索引的,因为B树索引是不索引空值的。
推荐方案:
用其它相同功能的操作运算代替,如
a is not null 改为 a>0 或a>''等。
不允许字段为空,而用一个缺省值代替空值,如业扩申请中状态字段不允许为空,缺省为申请。
建立位图索引(有分区的表不能建,位图索引比较难控制,如字段值太多索引会使性能下降,多人更新操作会增加数据块锁的现象)
5.>及<操作符(大于或小于操作符)
大于或小于操作符一般情况下是不用调整的,因为它有索引就会采用索引查找,但有的情况下可以对它进行优化,
如一个表有100万记录,一个数值型字段A,30万记录的A=0,30万记录的A=1,39万记录的A=2,1万记录的A=3.
那么执行A>2与A>=3的效果就有很大的区别了,因为A>2时ORACLE会先找出为2的记录索引再进行比较,而A>=3时ORACLE则直接找到=3的记录索引。
6.LIKE操作符
LIKE操作符可以应用通配符查询,里面的通配符组合可能达到几乎是任意的查询,但是如果用得不好则会产生性能上的问题,
如LIKE '%5400%' 这种查询不会引用索引,而LIKE 'X5400%'则会引用范围索引。
一个实际例子:
用YW_YHJBQK表中营业编号后面的户标识号可来查询营业编号 YY_BH LIKE '%5400%' 这个条件会产生全表扫描,
如果改成YY_BH LIKE 'X5400%' OR YY_BH LIKE 'B5400%' 则会利用YY_BH的索引进行两个范围的查询,性能肯定大大提高。
7.UNION操作符
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION.如:
select * from gc_dfys
union
select * from ls_jg_dfys
这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。
推荐方案:采用UNION ALL操作符替代UNION,因为UNION ALL操作只是简单的将两个结果合并后就返回。
select * from gc_dfys
union all
select * from ls_jg_dfys
8.大量数据时不用upper()和lower
分享到:
相关推荐
sql关键字字典大全
一,点击MSSQL中的工具>外部工具,新建一个外部菜单 二,使用 1,选中文本,按CTRL+C 2,点击工具>SQL语句关键字转大写 3,出现提示,按空格关闭. 4,按CTRL+V即可实现转换.
sql关键字fuzz字典.txt
这个是一个描述很多sql语句的关键字的用法大全,涵括了各个关键字的用法和实例 有需要的同仁请多多下载
SQL SERVER 常用关键字解析 SQL SERVER 常用关键字解析 SQL SERVER 常用关键字解析
sql注入中,常见的关键字,可用于快速fuzz,判断waf规则。简单实用,推荐配合burp使用
防sql关键字注入
一些sql关键字,以及一些简单的sql语句
felx高亮显示SQL语句关键字
Editplus编辑Sql高亮显示关键字,操作步骤见word文档
SQL SERVER 关键字SQL SERVER 关键字SQL SERVER 关键字SQL SERVER 关键字
经典sql语句笔记(sql 关键字)希望对读者有用
集成了所有的SQL的关键字!很好用的。集成了所有的SQL的关键字!很好用的。
整理出来的关于SQL注入时所需要的关键字,很全面,覆盖了很多,包括asp,php等等
sql注入关键字大全,包括sqlserve , odbc,等
下面把sqlserver中cross apply和outer apply关键字具体介绍展示如下: 1.CROSS APPLY 和OUTER APPLY MSDN解释如下(个人理解不是很清晰): 使用 APPLY 运算符可以为实现查询操作的外部表表达式返回的每个行调用表值...
本文件记录了sqlserver所有的关键字
此文档是本人亲自撰写,内容为测试的精华部分,欢迎下载来看,绝对有所收获!感谢!!!!!!不是那种随便复制黏贴的sql语句
sql语句关键字大写,比如在写存储过程时想要里面的字母变成大写,可以借助这个工具。
SQLKeywordsFormatter 用Python 3.9编写的命令行工具,用于将SQL关键字格式设置为大写,将其他单词格式设置为小写。 该工具适用于所有不想自己以大写形式编写关键字,而只希望简单地以小写形式编写所有内容的用户。 ...