比如特别大量的数据中,提取数据A列为ID号,B列为时间.假如这个数据是好几年的数据.
那么我有两个查询代码:Select A,B from tb where A like "A%" and B between 时间1 and 时间2
和
Select A,B from tb where B between 时间1 and 时间2 and A like "A%" 两段代码效率是否一样?又或者按照从左到右and的顺序依次来查询?希望大家指点.谢谢!
那么我有两个查询代码:Select A,B from tb where A like "A%" and B between 时间1 and 时间2
和
Select A,B from tb where B between 时间1 and 时间2 and A like "A%" 两段代码效率是否一样?又或者按照从左到右and的顺序依次来查询?希望大家指点.谢谢!
解决方案 »
- 触发器报错 好奇怪!!!create
- 小布oracle10g+rac实验的系统安装包
- oracle 触发器 !!!!!!!!!
- 存储过程调用另一个用户的存储过程,可以吗?
- 请问在Oracle里面如何实现向MSSQLserver2000的主键
- ORACLE 怎么样才能随电脑同启?
- 高分:为什么VB取不到Oracle全局临时表的数据?
- oracle 8.1.7中存储过程碰到的问题:while exits( 编译不过,高手赐教!
- 触发器里自动生成个值插入字段1中,在程序里怎么访问这个值呢
- 用sql*plus建的表在sql*plus worksheet 中不能用 反之亦然
- ORACLE 迁移 在线等!!!!!!!!!!
- 10G,由于下列错误,OracleOraDb10g_home1iSQL*Plus 服务启动失败:网上的办法都不行!
-- 表中 A、B字段的顺序是什么,索引的顺序就与其相同,
-- 查询的 Where 条件 其顺序也与表A、B字段的顺序一致!
DROP TABLE T PURGE;
create table t(a varchar2(20), b date, c varchar2(20));
insert into t(a,b,c) values('luoyoumou1',sysdate,'DBD');
insert into t(a,b,c) values('Aluoyoumou1',sysdate-1,'ABC');
insert into t(a,b,c) values('Bluoyoumou1',sysdate-2,'FFF');
insert into t(a,b,c) values('Cluoyoumou1',sysdate-3,'GGG');
insert into t(a,b,c) values('Auoyoumou1',sysdate-4,'GOGO');COMMIT;CREATE index t_inx on t(a,b);eygle@SZTYORA> set autotrace on;-- 你可以看到:以下两个查询都走了刚才创建的索引
eygle@SZTYORA> select * from t where a like 'A%';A B C
---------------------------------------- ------------------- ----------------------------------------
Aluoyoumou1 2010-07-22 10:09:47 ABC
Auoyoumou1 2010-07-19 10:09:47 GOGO已用时间: 00: 00: 00.07执行计划
----------------------------------------------------------
Plan hash value: 1579008347-------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2 | 66 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| T | 2 | 66 | 2 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | T_INX | 2 | | 1 (0)| 00:00:01 |
-------------------------------------------------------------------------------------
eygle@SZTYORA> select * from t where a like 'A%'
2 and b between trunc(sysdate-1) and trunc(sysdate);A B C
---------------------------------------- ------------------- ----------------------------------------
Aluoyoumou1 2010-07-22 10:09:47 ABC已用时间: 00: 00: 00.10执行计划
----------------------------------------------------------
Plan hash value: 1074106765--------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 33 | 2 (0)| 00:00:01 |
|* 1 | FILTER | | | | | |
| 2 | TABLE ACCESS BY INDEX ROWID| T | 1 | 33 | 2 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | T_INX | 1 | | 1 (0)| 00:00:01 |
--------------------------------------------------------------------------------------
Select A,B from tb where B between 时间1 and 时间2 and A like "A%"
不知道我理解的正确么?