谁能帮我解释下
跑批何解?
跑批何用?
以及性能的优化?
用的是Oracle
==感谢
跑批何解?
跑批何用?
以及性能的优化?
用的是Oracle
==感谢
解决方案 »
- sqlplus只能远程登陆
- oracle可以装载,无法打开,没有任何报错,一直等待
- 调用包内自定义Record数组问题
- 求一条SQL语句
- 请高手指点(马上结帖)在线等
- ???菜鸟刚学oracle,以前用sqlserver的时候知道存储过程写在哪里,哪位高手告诉我oracle的存储过程写到哪里啊?图形化操作的。
- IP地址怎么方便保存在数据库中?
- 求助...
- 一个触发器问题,新手,请大家帮忙!
- 请教一个oracle的算法问题,关于取数据
- WIN7 64位 + Toad for oracle 11.6 64b + oracle client 11.2 64b 配置成功
- 10g RAC系统用lvm分区会影响crs、ocs等服务的启动吗?
那您清楚怎样优化吗?
难道是优化sql语句?
2、优化sql语句
1)sql中不要用in(not in)要用exists(not exists)
2)尽量不要使用distinct、group by、order by、having等语句
3)select后面不要用*,要写具体字段,需要查询个数时,用select count(1) from 表 where 条件
4)多表联合查询时尽量减少条件的取值范围,比如员工表和部门表需要做连接
select 员工表.字段 from 员工表,部门表 where 员工表.字段 = 部门表.字段-----这种效率不高
select 员工表.字段 from 员工表
where 员工表.字段 = (select 部门表.字段 from 部门表 where 条件)--这种效率就会提高些
5)即时commit
2)尽量不要使用distinct、group by、order by、having等语句
3)select后面不要用*,要写具体字段,需要查询个数时,用select count(1) from 表 where 条件
4)多表联合查询时尽量减少条件的取值范围,比如员工表和部门表需要做连接
select 员工表.字段 from 员工表,部门表 where 员工表.字段 = 部门表.字段-----这种效率不高
select 员工表.字段 from 员工表
where 员工表.字段 = (select 部门表.字段 from 部门表 where 条件)--这种效率就会提高些
5)即时commit打红色的都不太了解,能给个解释吗。有例子就更好了!
1、使用in是全表扫描后面的条件会全部执行完毕,使用exits是只要找到结果就返回,这样避免多余的查询。
2、还用distinct等关键字,官方解释是会启动SQL引擎,执行耗费资源的排序(SORT)功能。我个人理解就是需要把查询结果读到内存,然后排序,比较是否有重复的记录,重复则删除。
3、使用count(1)只根据查询结果集的个数来计算条数,count(字段或*)需要额外有个查询这个字段的动作,效率会低点
在sql文件中写入 如下 :
Set Echo Off
Set Embedded On
Set Feedback Off
Set Pagesize 50000
Set Recsep Off
Set Verify Off
Set Heading Off
Set Long 32000
Set Linesize 1000
Set Timing Off
Set TrimSpool OnSPOOL ..\SQL1.SQL
select 'create synonym H_MARKING_COUNT_NEW05 for '||username||'.H_MARKING_COUNT_NEW05;' from all_users
where username like 'BDJF_%';
SPOOL OFF@@..\SQL1.SQL然后在命令行输入
sql> @sjbb #连不同数据库调sql文件。同时生产sql1.sql 文件执行