Erp100论坛's Archiver

xiangzhao 发表于 2008-7-9 10:08

关于 INDEX

SELECT COUNTVALUE,MINVALUE,MAXVALUE,AVGVALUE FROM  ME_STRG_EC_IO  WHERE (DAYHOUR = 2005093015) AND ((Y_MESSYU >= 35.663 AND Y_MESSYU  < 35.664 AND X_MESSYU >= 139.673 AND X_MESSYU  < 139.674))

xiangzhao 发表于 2008-7-9 10:08

我建立的游标是

CREATE INDEX  XXXX ON  ME_STRG_EC_IO(DAYHOUR ,Y_MESSYU ,x_MESSYU )
但是 我做如下操作 看不见INDEX


   EXPLAIN PLAN FOR
SELECT COUNTVALUE,MINVALUE,MAXVALUE,AVGVALUE FROM  
BTS_STRG_EC_IO WHERE DAYHOUR = 2005093015


2  analyze table BTS_STRG_EC_IO compute statistics for table  
for all indexes  
for all indexed columns;  

3   SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

xiangzhao 发表于 2008-7-9 10:08

结果是

1        Plan hash value: 1052544228
2         
3        -----------------------------------------------------------------------------------
4        | Id  | Operation         | Name          | Rows  | Bytes | Cost (%CPU)| Time     |
5        -----------------------------------------------------------------------------------
6        |   0 | SELECT STATEMENT  |               |     1 |    91 |    17   (0)| 00:00:01 |
7        |*  1 |  TABLE ACCESS FULL| ME_STRG_EC_IO |     1 |    91 |    17   (0)| 00:00:01 |
8        -----------------------------------------------------------------------------------
9         
10        Predicate Information (identified by operation id):
11        ---------------------------------------------------
12         
13           1 - filter("DAYHOUR"=2005093015 AND "Y_MESSYU">=35.663 AND
14                      "Y_MESSYU"<=35.664 AND "X_MESSYU">=139.673 AND "X_MESSYU"<=139.674 AND
15                      "Y_MESSYU"<>35.664 AND "X_MESSYU"<>139.674)
16         
17        Note
18        -----
19           - dynamic sampling used for this statement

xiangzhao 发表于 2008-7-9 10:09

看执行计划的这句
Y_MESSYU"<>35.664 AND "X_MESSYU"<>139.674)
解释后的语句的谓语里面有 <> ,开区间,这样是不会走索引
为什么在你环境中和解释成这样,我现在看不出来
你强制使用索引试验一下
/*+ INDEX (ME_STRG_EC_IO  XXXX )*/

xiangzhao 发表于 2008-7-9 10:09

额.... 其实我把条件改为  BTWEEN AND  就不需要 <> 了

还有就是对于INDEX来说 MEASURE_DATE 有很多重复数据 所以我在想是不是不走INDEX的原因

或者解决办法把 MEASURE_DATE 放到 X MESYU  和  Y MESYU 后面  或者删除掉

xiangzhao 发表于 2008-7-9 10:09

MEASURE_DATE 就是 DAYHOUR

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.