首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库性能优化之SQL语句优化

也就是说如果某存在空,即使对该建索引也不会提高性能。任何在where子句中使用is null或is not null语句优化器是不允许使用索引。...推荐方案:用其它相同功能操作运算代替,:a is not null 改为 a>0 或a>’’等。不允许字段为空,而用一个缺省代替空申请状态字段不允许为空,缺省为申请。...,ORACLE将无法使用该索引.对于单列索引,如果包含空,索引中将不存在此记录....如果至少有一个不为空,则记录存在于索引.举例: 如果唯一性索引建立在表A和B列上, 并且表存在一条记录A,B为(123,null) , ORACLE将不接受下一条具有相同A,B(123,...然而如果所有的索引都为空,ORACLE将认为整个键值为空而空不等于空. 因此你可以插入1000 条具有相同键值记录,当然它们都是空!

5.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

SQL 性能调优

回到顶部 (25) 用IN来替换OR  这是一条简单易记规则,但是实际执行效果还须检验,在ORACLE8i下,执行路径似乎是相同. 低效: SELECT…....,ORACLE将无法使用该索引.对于单列索引,如果包含空,索引中将不存在此记录....如果至少有一个不为空,则记录存在于索引.举例: 如果唯一性索引建立在表A和B列上, 并且表存在一条记录A,B为(123,null) , ORACLE将不接受下一条具有相同A,B(123,...然而如果所有的索引都为空,ORACLE将认为整个键值为空而空不等于空. 因此你可以插入1000 条具有相同键值记录,当然它们都是空!...任何在where子句中使用is null或is not null语句优化器是不允许使用索引。 回到顶部 (37) 联接 对于有联接,即使最后联接为一个静态,优化器是不会使用索引

3.2K10

select from update row实现

DTCC大会上,阿里江疑演讲中提到一个:select from update hot row; 不明白如何在Oracle实现,他意思是在一条SQL实现update和select这条update...经dbsnake指点,了解这是模仿了Oraclereturning into子句,可以将使用DML语句影响行记录指定select出来。...插入一条记录,使用returning into在同一条SQL获得插入idSQL> declare 2 l_id tbl_returninto.id%type; 3 begin...更新和删除一条记录,使用returning into获得更新和删除idSQL> declare l_id tbl_returninto.id%type; 2 begin 3 update...总结: 使用returning into子句可以在一条SQL中将insert、update和delete影响行记录指定字段信息select出来,其中insert和update都是执行之后结果,delete

1.5K20

SQL 性能调优

(25) 用IN来替换OR  这是一条简单易记规则,但是实际执行效果还须检验,在ORACLE8i下,执行路径似乎是相同. 低效: SELECT…....,ORACLE将无法使用该索引.对于单列索引,如果包含空,索引中将不存在此记录....如果至少有一个不为空,则记录存在于索引.举例: 如果唯一性索引建立在表A和B列上, 并且表存在一条记录A,B为(123,null) , ORACLE将不接受下一条具有相同A,B(123,...然而如果所有的索引都为空,ORACLE将认为整个键值为空而空不等于空. 因此你可以插入1000 条具有相同键值记录,当然它们都是空!...任何在where子句中使用is null或is not null语句优化器是不允许使用索引。 (37) 联接 对于有联接,即使最后联接为一个静态,优化器是不会使用索引

2.7K60

分享:Oracle sql语句优化

用其它相同功能操作运算代替, a is not null 改为 a>0 或a>''等。 不允许字段为空,而用一个缺省代替空业扩申请状态字段不允许为空,缺省为申请。...避免在索引列上使用IS NULL 和IS NOT NULL 避免在索引中使用任何可以为空ORACLE将无法使用该索引.对于单列索引,如果包含空,索引中将不存在此记录....对于复合索引,如果每个都为空,索引同样不存在 此记录.如果至少有一个不为空,则记录存在于索引.举例: 如果唯一性索引建立在表A 和B 列上, 并且表存在一条记录A,B为(123,null...) , ORACLE 将不接受下一 条具有相同A,B (123,null)记录(插入).然而如果所有的索引都为空,ORACLE 将认为整个键值为空而空不等于空....因此你可以插入1000 条具有相同键值记录,当然它们都是空!因为空不存在于索引,所以WHERE 子句中对索引进行空比较将使ORACLE 停用该索引.

2.8K10

SQL 性能优化 总结

语句用大写;因为oracle 总是先解析sql 语句,把小写字母转换成大写再执行 (20)在java代码尽量少用连接符“+”连接字符串!...(25)用IN来替换OR 这是一条简单易记规则,但是实际执行效果还须检验,在 ORACLE8i下,执行路径似乎是相同. 低效:SELECT…....,ORACLE将无法使用该索引.对于单列索引,如果包含空,索引中将不存在此记录.对于复合索引,如果每个都为空,索引同样不存在此记录....如果至少有一个不为空,则记录存在于索引.举例:如果唯一性索引建立在表A 和B 列上,并且表存在一条记录A,B 为(123,null) , ORACLE将不接受下一条具有相同 A,B (123...因此你可以插入 1000条具有相同键值记录,当然它们都是空! 因为空不存在于索引 ,所以WHERE子句中对索引进行空比较将使 ORACLE 停用该索引.

1.8K20

基本 SQL 之数据库及表管理

表格是一个二维结构,有行和,我们管一行数据叫做『一条记录』或是『一条数据』,每一都是一条数据一部分,我们管某一数据叫做『字段』,在数据库它们可以具有不同数据类型。...3、UNIQUE 唯一约束 UNIQUE 约束用于限制表某一字段不可重复,也即唯一,一张表可以有很多记录,每条记录该字段必须各不相同。...create table person( id int, uName VARCHAR(16) UNIQUE ) 这样,无论你向 person 表插入多少条数据记录,uName 这个字段是必须各不相同...,也即当你尝试向 person 表插入一条数据时,如果检测到你将要插入这条数据 uName 字段在表已知记录存在,你将不能成功插入。...虽然本篇写很多,但并未涉及复杂 SQL 语句,仅限于简单创建 DDL 语句,下一篇我们看较为复杂 DML 语句,进一步了解 SQL 对表增删改查。

1.8K30

Oracle SQL性能优化

ORACLE将无法使用该索引.对于单列索引,如果包含空,索引中将不存在此记录....如果至少有一个不为空,则记录存在于索引.举例: 如果唯一性索引建立在表A和B列上, 并且表存在一条记录A,B为(123,null) , ORACLE将不接受下一条具有相同A,B(123...然而如果所有的索引都为空,ORACLE将认为整个键值为空而空不等于空. 因此你可以插入1000 条具有相同键值记录,当然它们都是空!...因为空不存在于索引,所以WHERE子句中对索引进行空比较将使ORACLE停用该索引....这也是一条简单而重要规则,当仅引用索引第二个时,优化器使用了全表扫描而忽略了索引 (28) 用UNION-ALL 替换UNION ( 如果有可能的话): 当SQL语句需要UNION个查询结果集合时

2.8K70

Java SQL语句优化经验

. (25) 用IN来替换OR 这是一条简单易记规则,但是实际执行效果还须检验,在ORACLE8i下,执行路径似乎是相同....,ORACLE将无法使用该索引.对于单列索引,如果包含空,索引中将不存在此记录....如果至少有一个不为空,则记录存在于索引.举例: 如果唯一性索引建立在表A和B列上, 并且表存在一条记录A,B为(123,null) , ORACLE将不接受下一条具有相同A,B(123,...然而如果所有的索引都为空,ORACLE将认为整个键值为空而空不等于空. 因此你可以插入1000 条具有相同键值记录,当然它们都是空!...因为空不存在于索引,所以WHERE子句中对索引进行空比较将使ORACLE停用该索引.

2.6K100

oracle数据库sql语句优化(循环语句有几种语句)

下面列举一些工作中常常会碰到OracleSQL语句优化方法: 1、SQL语句尽量用大写; 因为oracle总是先解析SQL语句,把小写字母转换成大写再执行。...对于单列索引,如果包含空,索引中将不存在此记录。 对于复合索引,如果每个都为空,索引同样不存在此记录。如果至少有一个不为 空,则记录存在于索引。...如果唯一性索引建立在表A和B列上, 并且表存在一条记录A,B为(123,null), ORACLE将不接受下一条具有相同A,B(123,null)记录(插入)。...然而如果所有的索引 都为空,ORACLE将认为整个键值为空而空不等于空。因此你可以插入10000条具有相同键值 记录,当然它们都是空!...因为空不存在于索引,所以WHERE子句中对索引进行空 比较将使ORACLE停用该索引。

2.8K10

数据库常见面试题及答案(数据库面试常见问题)

缺点:移植性差 4、存储过程与函数区别 存储过程 函数 用于在数据库完成特定操作或者任务(插入、删除等) 用于特定数据(选择) 程序头部声明用procedure 程序头部声明用...,且改要与声明部分一致,也可以是通过out类型参数带出变量 SQL语句(DML 或SELECT)不可调用存储过程 SQL语句(DML 或SELECT)可以调用函数 5、索引作用?...Oracle自己开发了一个数据类型varchar2,这个类型不是一个标准varchar,他将在数据库varchar可以存储空字符串特性改为存储null,如果你想有向后兼容能力,oracle建议使用...DML(Data Manipulation Language)数据操控语言,包括: Insert语句:向数据表张插入一条记录。...26、表和视图关系 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中相关数据。 表就是关系数据库实际存储数据用

3.5K10

Oracle-Soft ParseHard ParseSoft Soft Parse解读

概述 在Oracle存在种类型SQL语句: 一类为 DDL语句(数据定义语言)CREATE,DROP,ALTER,他们是从来不会共享使用,也就是每次执行都需要进行硬解析。...c.如果共享池中存在相同哈希,则对这个命令进一步判断是否进行软解析,否则e步骤。 d.对于存在相同哈希新命令行,其文本将与已存在命令行文本逐个进行比较。...现有数据库SQL语句HASH我们可以通过访问vsql、vsqlarea、v ? 如果SQL语句HASH一致,那么ORACLE事实上还需要对SQL语句语义进行再次检测,以决定是否一致。...那么为什么Oracle需要再次对语句文本进行检测呢?不是SQL语句HASH已经对应上了?事实上就算是SQL语句HASH已经对应上了,并不能说明这SQL语句就已经可以共享了。...游标涉及数据对象是不同; AUTH_CHECK_MISMATCH 表示对同样一条SQL语句转换是不匹配

2.2K20

Oracle查询优化-04插入、更新与删除数据

4.1 插入新记录 问题 向表插入一条记录。 解决方案 使用带有values子句insert语句插入一行。...,则必须要插入所有,需要注意,在插入列表中所列出顺序,必须与select * 查询语句所列出顺序完全一致。...注意事项: 如果insert语句中没有包含默认,则会添加默认 C4 如果包含默认,需要用default关键字,才回添加默认C1 如果已经显示设定了NULL或者其他,则不会生成默认...,C2,C3 ---- 4.3 阻止对某几列插入 问题 举个例子,如果我们希望C4默认为SYSDATE,这种一般是为了记录数据生成时间,不允许手工录入,该怎么办么?...---- 4.5多表插入语句 oracle从9i开始可以用一条insert语句实现向多个表插入数据 Oracle Insert all有三种情况: 一、无条件 INSERT ALL 二、条件

1.2K10

Oracle数据库相关经典面试题

答∶ ORACLE事务在执行第一条可执行SQL语句时开始,一条COMMIT、ROLLBACK语句或退出数据库时事务结束。 利用ROLLBACK语句可以在COMMIT命令前随时撤消或回退一个事务。...触发器能用COMMIT,为什么? 答∶ 在触发器不能使用COMMIT;等事务控制语句。因为触发器是事务触发的如果有事务控制语句就会影响触发它事务。...悲观锁是通过在sql语句上加入 for update,乐观锁可以通过增加一version或者timestamp在应用程序实现,Hibernate采用乐观锁版本戳。 索引作用?...索引可以是唯一创建索引允许指定单个或者是多个。缺点是它减慢了数据录入速度同时也增加了数据库尺寸大小。 触发器分为事前触发和事后触发,这种触发有和区别。语句级触发和行级触发有何区别?...只有使为true行才被插入VT4. GROUP BY:按GROUP BY子句中列表对VT4行分组,生成VT5.

2.2K20

oracle基础|oracle认知|Select用法详解

可以通过使用结构化查询语句(Structured Query Language (SQL))来操作元组数据 3.属性:元组一个属性(分量) 4.码:如果在一个关系存在这样一个属性,它能够用来唯一标识一行...3.三个名词: sql:结构化查询语句,操作oracle数据库语言 sqlplus:oracle软件自带可以输入sql,且将sql执行结果显示终端 pl/sql:程序化slq语句,在sql语句基础上加入一定逻辑操作...注意2:如果distinct关键词后面如果出现多,表示多联合去重,即多相同时候才会认为是重复记录。...关键字后 顺序(号); 3) order by后可以跟多, 表示先按第一排序, 第一相同再按 第二进行排序,如前二 均有相同,则按第三进行排序...= 2》sql比较操作符 between and:在什么范围之内 in(list):在一个列表 like:模糊查询,即不是精确时候使用 通配符,即可以代替任何内容符号 %:通配0多个字符

2.4K20

数据库技术知识点总结之一——事务

):会出现不可重复读、幻读; Oracle 默认隔离级别; 一个事务内操作一条数据,可以查询另一个已提交事务操作同一条数据最新; 可重复读 (Repeatable Read):会出现幻读;...标准隔离级别Oracle 只有 Read committed, Serializable 种,此外还有 ReadOnly, WriteOnly 种级别。...实体完整性:即主属性不为空; 参照完整性:外键必须存在于原表; 用户自定义完整性:比如定义某不能为空 (NOT NULL),唯一 (unique),是否满足 boolean 表达式(岁数...,查询某条数据也是同一个; 比如事务 A 查询主键 id = 1 行数据 age = 10,不管事务 B 是否对该 age 做出改变,事务 A 多条查询 SQL 语句,查询 age 一定一直都是...n),执行第一个 SQL 语句时,读取是当前 readView (id = n); 事务 B 开始,首先生成 id = n+1 readView; 事务 B 使用索引进行插入(或 update

47230
领券