本人在使用"create table as select "时发现奇怪的问题:
第一次 create table t1 nologging as select f1,f2 from t where f1='01'
其中表t的f1建立了索引,f1='01'的数据量有5638条。
花时19秒,
接着
create table t2 as select * from t1
花时1秒
请问哪位大侠能给小弟解释一下为什么会有如此大的差异。另说明一下t表有50万数据。
如何提高第一步操作的效率呢?
第一次 create table t1 nologging as select f1,f2 from t where f1='01'
其中表t的f1建立了索引,f1='01'的数据量有5638条。
花时19秒,
接着
create table t2 as select * from t1
花时1秒
请问哪位大侠能给小弟解释一下为什么会有如此大的差异。另说明一下t表有50万数据。
如何提高第一步操作的效率呢?
解决方案 »
- 如何把整数转换为hh:mi:ss的格式
- 求一sql
- 一个棘手的诡异问题
- oracle 小机上添加裸设备时出错,请高手帮帮看看日志,指点迷津!急,在线等。。。。。。。。。。。。
- 32位的操作系统上开发的ASP.NET程序(基于oracle)能否 运行在64位服务器上?
- 调用存储过程报错:PLS-00306和ORA-06550
- 高难sql查询,高手指教,在线等待,急!!
- oracle郁闷中,今天过节,孝敬大家点分
- 在Oracle中我用什么工具可以将Oracle中的自定义的过程的脚本取出??
- 如何登录Oracle directory Security Manager?
- Oracle存储过程返回参数
- VB.NET调用存储过程(Oracle),传参数问题,谢谢大家。
应该是 where f1='01' 的影响,加INDEX看看。
1、f1是建了索引的,
2、select f1,f2 from t where f1='01'的速度很快,只要1.1秒的时间
3、f1和f2字段都设置的是VARCHAR2(100)
还是那个问题,是什么原因造成的呢?
下面是我测试的结果,很快的,仅供参考:-----------------------------------------------------------------------------------------------------------------SQL> set serveroutput on size 10000;
SQL> set timing on;
SQL> select count(0) from t; COUNT(0)
----------
500000経過: 00:00:00.05
SQL> select count(0) from t where f1 = '01'; COUNT(0)
----------
5638経過: 00:00:00.01
SQL> create table t1 nologging as select f1,f2 from t where f1='01';表が作成されました。経過: 00:00:00.00
SQL> create table t2 as select * from t1;表が作成されました。経過: 00:00:00.00
SQL> select count(0) from t1; COUNT(0)
----------
5638経過: 00:00:00.00
SQL> select count(0) from t2; COUNT(0)
----------
5638経過: 00:00:00.00
SQL>-----------------------------------------------------------------------------------------------------------------