Sql语句优化
cnham
专注提升价值;健康才是根本。
展开
-
exists 和 in 的区别
网友1:复习一下in&exist语法:一般来讲in是对外表和内表作Hash Join,而exist是对外表和内表做了一个nested loop,也就是说,对于exist,针对外表(需要遍历其所有内容)需要遍历的每一行,都会对内表进行一次查询,因此如果外表和内表大小相当,in和exist在性能的差别上就不是很大:)如果两个表中一个是较小的表,一个是较大的表,如果内表大则用exists性能会更好(原创 2009-09-05 15:32:00 · 1717 阅读 · 0 评论 -
sqlldr相关
SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。现在,我们抛开其理论不谈,用实例来使您快速掌握SQL*LOADER的使用方法。 首先,我们认识一下SQL*LOADER。 在NT下,SQL*LOADER的命令为SQLLDR,在UN转载 2009-11-04 11:36:00 · 915 阅读 · 0 评论 -
常见优化原则1
1、 用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数;通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;能够分开的操作尽量分开处理,提高每次的响应速度;在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;算法的结构尽量简单;在查询时,不要过多地使用通配符如SELECT * FROM T1语句,要用到几列就选择几列如:SELECT COL1,COL2 F转载 2009-10-31 16:23:00 · 794 阅读 · 0 评论 -
sql优化2
上面我们提到的是一些基本的提高查询速度的注意事项,但是在更多的情况下,往往需要反复试验比较不同的语句以得到最佳方案。最好的方法当然是测试,看实现相同功能的SQL语句哪个执行时间最少,但是数据库中如果数据量很少,是比较不出来的,这时可以用查看执行计划,即:把实现相同功能的多条SQL语句考到查询分析器,按CTRL+L看查所利用的索引,表扫描次数(这两个对性能影响最大),总体上看询成本百分比即可。 简转载 2009-10-31 16:33:00 · 922 阅读 · 0 评论 -
Oracle中组合索引的使用详解
在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引。在组合索引的使用方面,Oracle有以下特点: 1、 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时,才会使用到该索引; 2、 在使用Oracle9i之前的基于成本的优化器(CBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时,才可能会使用到转载 2009-11-15 11:24:00 · 1679 阅读 · 0 评论 -
几种索引扫描方式
1)索引唯一扫描 如果查询时是通过unique或primary key约束来保证只返回一条数据,那么优化器就会选择索引唯一扫描,这是访问一条数据的最快方式。2)索引范围扫描索引键非唯一,当遇到如下条件时会使用索引范围扫描:1.col=:b12.col3.col>:b13)索引降序范围扫描与2)中的情况相同,只不过2)默认是安装升序进行查找的,而这里是按转载 2009-11-15 11:49:00 · 1401 阅读 · 0 评论 -
关于 Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法
在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法:1. A 表的记录导出为一条条分号隔开的 insert 语句,然后执行插入到 B 表中2. 建立数据库间的 dblink,然后用 create table B as select * from A@dblink where ...,或 insert into B select * fr转载 2009-11-19 17:44:00 · 2408 阅读 · 0 评论 -
oracle分析函数over的用法
over sql转载 2010-06-26 11:29:00 · 1556 阅读 · 0 评论 -
oralc UPDATE关联表的思路总结
多个表关联更新的问题总结,不错的东西,也是很经典的东西转载 2010-06-17 16:07:00 · 1534 阅读 · 0 评论