to_date('20050501','yyyy-mm-dd') 与 to_date('2005-05-01','yyyy-mm-dd') 在 应用中用到, 无意发现 两者查询速度
相差很大 (一个 1s内,一个 30几秒)?
不知道这是什么情况!
你们猜哪个是 1s内,哪个是30几秒 再接着往下推测
相差很大 (一个 1s内,一个 30几秒)?
不知道这是什么情况!
你们猜哪个是 1s内,哪个是30几秒 再接着往下推测
解决方案 »
- ORACLE里的用户名是什么,怎么修改
- 一个用户表、一个好友表,怎么查询好友最多的前三个用户???
- 在 LINUX系统中的ORACLE怎么新建表空间?
- 相同语句创建的表与视图,对其中的同一个字段做全表sum的结果不一致,怎么入手解释这个现象?
- 为什么第二次修改control.files不成功
- 用同表中的某些记录更新其他记录
- 请教几个关于多行子查询和多列子查询的问题
- OCI 参数解释的问题
- 关于过程执行的问题
- oracle 异地数据库同步。
- java写oracle数据库出现Execution of query failed,求高手解答
- 求一条sql语句:可以合并上面3个表,变成下面的table123
to_date('2005-05-01','yyyy-mm-dd') 30多 s出的结果!!
难道这是标准格式?
已连接。
SQL> set autotrace on
SQL> set timing on
SQL> select to_date('20120522','yyyy-mm-dd') from dual;TO_DATE('20120
--------------
22-5月 -12已用时间: 00: 00: 00.01执行计划
----------------------------------------------------------
Plan hash value: 1388734953-----------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
-----------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2 (0)| 00:00:01 |
| 1 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
-----------------------------------------------------------------
统计信息
----------------------------------------------------------
1 recursive calls
0 db block gets
0 consistent gets
0 physical reads
0 redo size
442 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processedSQL> select to_date('2012-05-22','yyyy-mm-dd') from dual;TO_DATE('2012-
--------------
22-5月 -12已用时间: 00: 00: 00.00执行计划
----------------------------------------------------------
Plan hash value: 1388734953-----------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
-----------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2 (0)| 00:00:01 |
| 1 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
-----------------------------------------------------------------
统计信息
----------------------------------------------------------
1 recursive calls
0 db block gets
0 consistent gets
0 physical reads
0 redo size
444 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
这是执行计划,这两个其实没什么差别。你的30秒?有那么夸张吗?怎么可能达到30秒?这不是oracle的作风!从执行计划可以看出是to_date('2012-05-22','yyyy-mm-dd')比较省时。但这两都是一个数量级的。毫秒级别啊。差异可忽略。
SQL> select to_date('2012-05-22','yyyy-mm-dd') from dual;
TO_DATE('2012-05-22','YYYY-MM-
------------------------------
2012-5-22
Executed in 0 seconds
SQL> select to_date('20120522','yyyy-mm-dd') from dual;
TO_DATE('20120522','YYYY-MM-DD
------------------------------
2012-5-22
Executed in 0 seconds
SQL>
两个查询sql 其它地方都相同,只有这里的to_date 中间有无横杠的区别,我查询了几次效果都是一样!
而且 现在的 to_date 是用在的 条件列上,而不是查询的数据列上的转换,个人猜测和我的数据多少无吧。
一个表 的记录是 3000w(2.6G),一个表是300w记录(300M)
----------------------------------------------------------
1 recursive calls
1 db block gets
0 consistent gets
0 physical reads
380 redo size
184653 bytes sent via SQL*Net to client
7897 bytes received via SQL*Net from client
685 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
10257 rows processed统计信息
----------------------------------------------------------
1 recursive calls
0 db block gets
0 consistent gets
0 physical reads
0 redo size
184653 bytes sent via SQL*Net to client
7897 bytes received via SQL*Net from client
685 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
10257 rows processed