关于索引不生效的问题
时间:2011-11-28
来源:互联网
各位大虾们,小弟有个问题不解,望各位给点帮助
我在Table_name 表中建立索引
create index I_VEHICLEPASS_COM2 on Table_name (PASSTIME,crosslsh,PLATEINFO)
create bitmap index I_VEHICLEPASS_COM1 on Table_name (crosslsh);
select count(1)
from TABLE_NAME v
where passTime >=
to_timestamp('2011-5-1 00:00:00', 'yyyy-mm-dd HH24:MI:SS')
and passTime <=
to_timestamp('2011-5-30 23:59:59', 'yyyy-mm-dd HH24:MI:SS')
and CROSSLSH in (21)
and plateInfo like '%'
1 Plan hash value: 939785991
2
3 -----------------------------------------------------------------------------------------
4 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
5 -----------------------------------------------------------------------------------------
6 | 0 | SELECT STATEMENT | | 1 | 23 | 26558 (2)| 00:05:19 |
7 | 1 | SORT AGGREGATE | | 1 | 23 | | |
8 |* 2 | FILTER | | | | | |
9 |* 3 | INDEX RANGE SCAN| I_VEHICLEPASS_COM2 | 293K| 6588K| 26558 (2)| 00:05:19 |
10 -----------------------------------------------------------------------------------------
11
12 Predicate Information (identified by operation id):
13 ---------------------------------------------------
14
15 2 - filter(TO_TIMESTAMP('2011-5-1 00:00:00',:B1)<=TO_TIMESTAMP('2011-5-30
16 23:59:59',:B2))
17 3 - access("PASSTIME">=TO_TIMESTAMP('2011-5-1 00:00:00',:B1) AND
18 "CROSSLSH"=21 AND "PASSTIME"<=TO_TIMESTAMP('2011-5-30 23:59:59',:B2))
19 filter("CROSSLSH"=21 AND "PLATEINFO" LIKE '%')
这里用来索引
但是我再加一个条件 就不用索引,而是进行全部扫描
select count(1)
from TABLE_NAME v
where passTime >=
to_timestamp('2011-5-1 00:00:00', 'yyyy-mm-dd HH24:MI:SS')
and passTime <=
to_timestamp('2011-5-30 23:59:59', 'yyyy-mm-dd HH24:MI:SS')
and CROSSLSH in (21)
and plateInfo like '%'
and drivewayNumber = '1'
1 Plan hash value: 477241886
2
3 -------------------------------------------------------------------------------------------
4 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
5 -------------------------------------------------------------------------------------------
6 | 0 | SELECT STATEMENT | | 1 | 26 | 205K (3)| 00:41:06 |
7 | 1 | SORT AGGREGATE | | 1 | 26 | | |
8 |* 2 | FILTER | | | | | |
9 |* 3 | TABLE ACCESS FULL| TABLE_NAME | 24445 | 620K| 205K (3)| 00:41:06 |
10 -------------------------------------------------------------------------------------------
11
12 Predicate Information (identified by operation id):
13 ---------------------------------------------------
14
15 2 - filter(TO_TIMESTAMP('2011-5-1 00:00:00',:B1)<=TO_TIMESTAMP('2011-5-30
16 23:59:59',:B2))
17 3 - filter("CROSSLSH"=21 AND "DRIVEWAYNUMBER"=1 AND
18 "PASSTIME"<=TO_TIMESTAMP('2011-5-30 23:59:59',:B1) AND
19 "PASSTIME">=TO_TIMESTAMP('2011-5-1 00:00:00',:B2) AND "PLATEINFO" LIKE '%')
这是为什么呢? 很困惑啊! 望大虾赐教……!!!
谢谢!
我在Table_name 表中建立索引
create index I_VEHICLEPASS_COM2 on Table_name (PASSTIME,crosslsh,PLATEINFO)
create bitmap index I_VEHICLEPASS_COM1 on Table_name (crosslsh);
select count(1)
from TABLE_NAME v
where passTime >=
to_timestamp('2011-5-1 00:00:00', 'yyyy-mm-dd HH24:MI:SS')
and passTime <=
to_timestamp('2011-5-30 23:59:59', 'yyyy-mm-dd HH24:MI:SS')
and CROSSLSH in (21)
and plateInfo like '%'
1 Plan hash value: 939785991
2
3 -----------------------------------------------------------------------------------------
4 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
5 -----------------------------------------------------------------------------------------
6 | 0 | SELECT STATEMENT | | 1 | 23 | 26558 (2)| 00:05:19 |
7 | 1 | SORT AGGREGATE | | 1 | 23 | | |
8 |* 2 | FILTER | | | | | |
9 |* 3 | INDEX RANGE SCAN| I_VEHICLEPASS_COM2 | 293K| 6588K| 26558 (2)| 00:05:19 |
10 -----------------------------------------------------------------------------------------
11
12 Predicate Information (identified by operation id):
13 ---------------------------------------------------
14
15 2 - filter(TO_TIMESTAMP('2011-5-1 00:00:00',:B1)<=TO_TIMESTAMP('2011-5-30
16 23:59:59',:B2))
17 3 - access("PASSTIME">=TO_TIMESTAMP('2011-5-1 00:00:00',:B1) AND
18 "CROSSLSH"=21 AND "PASSTIME"<=TO_TIMESTAMP('2011-5-30 23:59:59',:B2))
19 filter("CROSSLSH"=21 AND "PLATEINFO" LIKE '%')
这里用来索引
但是我再加一个条件 就不用索引,而是进行全部扫描
select count(1)
from TABLE_NAME v
where passTime >=
to_timestamp('2011-5-1 00:00:00', 'yyyy-mm-dd HH24:MI:SS')
and passTime <=
to_timestamp('2011-5-30 23:59:59', 'yyyy-mm-dd HH24:MI:SS')
and CROSSLSH in (21)
and plateInfo like '%'
and drivewayNumber = '1'
1 Plan hash value: 477241886
2
3 -------------------------------------------------------------------------------------------
4 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
5 -------------------------------------------------------------------------------------------
6 | 0 | SELECT STATEMENT | | 1 | 26 | 205K (3)| 00:41:06 |
7 | 1 | SORT AGGREGATE | | 1 | 26 | | |
8 |* 2 | FILTER | | | | | |
9 |* 3 | TABLE ACCESS FULL| TABLE_NAME | 24445 | 620K| 205K (3)| 00:41:06 |
10 -------------------------------------------------------------------------------------------
11
12 Predicate Information (identified by operation id):
13 ---------------------------------------------------
14
15 2 - filter(TO_TIMESTAMP('2011-5-1 00:00:00',:B1)<=TO_TIMESTAMP('2011-5-30
16 23:59:59',:B2))
17 3 - filter("CROSSLSH"=21 AND "DRIVEWAYNUMBER"=1 AND
18 "PASSTIME"<=TO_TIMESTAMP('2011-5-30 23:59:59',:B1) AND
19 "PASSTIME">=TO_TIMESTAMP('2011-5-1 00:00:00',:B2) AND "PLATEINFO" LIKE '%')
这是为什么呢? 很困惑啊! 望大虾赐教……!!!
谢谢!
作者: wanghuaiyuanwhy 发布时间: 2011-11-28
兄弟,我也很好奇,建表语句和数据能不能共享一下? 我想在我这边再现一下。
作者: named_fish 发布时间: 2011-11-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28