`
ahua186186
  • 浏览: 563049 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

不推荐使用的sql关键字

 
阅读更多
一。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关键字转成大写工具

    SQL关键字是编写查询、更新、删除和管理数据库结构的基础,它们有着严格的语法规定,其中大小写的规范就是其中之一。在某些情况下,为了代码的可读性和一致性,我们可能需要将SQL语句中的关键字转换为大写。针对这一...

    sql关键字字典大全

    - **BIGINT**:一种数据类型,用于存储大整数,在不同的SQL版本中有着一致的保留状态,但在PostgreSQL中是非保留的,这意味着它可以作为标识符使用,但不推荐这样做。 #### C系列关键字 - **CACHE**:在不同SQL...

    sql关键字fuzz字典.txt

    sql关键字fuzz字典.txt

    SQL关键字字典.txt

    sql注入中,常见的关键字,可用于快速fuzz,判断waf规则。简单实用,推荐配合burp使用

    sql 关键字语法大全

    这个是一个描述很多sql语句的关键字的用法大全,涵括了各个关键字的用法和实例 有需要的同仁请多多下载

    sql注入关键字大全

    以上列举的SQL注入关键字和技术点覆盖了SQL注入攻击的基本面,包括但不限于获取数据库信息、执行操作系统命令、遍历文件系统以及操纵数据库角色和权限等方面。这些技术点的掌握对于理解SQL注入攻击机制以及提高系统...

    SQL关键字大写

    实现SQL关键字大写的方法有很多,包括使用数据库管理系统提供的功能或者借助第三方工具。例如: - **数据库内置函数**:某些DBMS如MySQL提供了`UPPER()`函数,可以将字符串中的所有字符转换为大写。 - **编辑器或...

    防sql关键字注入

    防sql关键字注入

    SQL 常用关键字解析

    它们可以是局部变量(由 `@` 开头)或全局变量(使用 `GLOBAL` 关键字声明)。 ```sql DECLARE @local_variable INT; SET @local_variable = 10; ``` 总结以上内容,我们介绍了 SQL 语言中的一些常用关键字,这些...

    sql关键字

    一些sql关键字,以及一些简单的sql语句

    felx高亮显示SQL语句关键字

    felx高亮显示SQL语句关键字

    整理出来的SQL注入点关键字

    整理出来的关于SQL注入时所需要的关键字,很全面,覆盖了很多,包括asp,php等等

    SQL常用的关键字

    下面将详细介绍常用的SQL关键字。 1. 查询语句关键字:SELECT SELECT语句用于从数据库中查询数据。基本语法为:SELECT 字段名 FROM 表名 WHERE 条件。例如,查询所有学生的姓名和性别:SELECT stuName, stuSex ...

    SQL Server ODBC保留关键字一览表

    这些关键字有特殊的含义和用途,不能作为标识符或对象名使用。尽管在 Transact-SQL 脚本中,使用 SQL Server 保留关键字作为标识符和对象名在语法上是可行的,但规定只能使用分隔标识符。 SQL Server ODBC 保留...

    经典sql语句笔记(sql 关键字)

    七、SQL关键字 SQL的关键字包括但不限于:`SELECT`, `INSERT`, `UPDATE`, `DELETE`, `CREATE`, `DROP`, `ALTER`, `GRANT`, `REVOKE`, `JOIN`, `LEFT JOIN`, `RIGHT JOIN`, `INNER JOIN`, `OUTER JOIN`, `LIKE`, `...

    SQL注入 FUZZ关键字 字典

    SQL注入 FUZZ关键字 字典

    sql server关键字详解大全(图文)

    下面把sqlserver中cross apply和outer apply关键字具体介绍展示如下: 1.CROSS APPLY 和OUTER APPLY MSDN解释如下(个人理解不是很清晰): 使用 APPLY 运算符可以为实现查询操作的外部表表达式返回的每个行调用表值...

    数据库sqlserver关键字

    SQL Server 关键字及语法 数据库管理系统(DBMS)中的 SQL Server 是一种关系型数据库管理系统,用于存储、管理和检索数据。为了高效地管理和操作数据库,SQL Server 提供了一系列关键字和语法,以下是 SQL Server ...

    Microsoft SQL Server 保留关键字

    这些关键字在SQL语句中有特定的意义,不能用作标识符(如表名、列名等)。本文将详细介绍Microsoft SQL Server中的保留关键字及其用途。 #### 一、SQL Server 保留关键字分类 SQL Server 的保留关键字可以分为以下...

Global site tag (gtag.js) - Google Analytics