Plan hash value: 4171239195
 
-----------------------------------------------------------------------------
| Id  | Operation         | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |         | 22542 |  6141K|  4363   (1)| 00:00:53 |
|*  1 |  TABLE ACCESS FULL| HOTTILE | 22542 |  6141K|  4363   (1)| 00:00:53 |
-----------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   1 - filter("LEFTBOTTOMLAT"<31.579059250426 AND 
              "LEFTBOTTOMLNG"<120.29799771321257 AND "RIGHTTOPLNG">120.29238653195342 
              AND "RIGHTTOPLAT">31.5754159881299)
为什么索引没用到?????????

解决方案 »

  1.   

    索引是那个字段?SQL语句又如何的?
      

  2.   


    select id,hotTileName 
    from HotTile 
    where leftBottomLat<31.579059250426
    and leftBottomLng<120.29799771321257 
    and rightTopLat>31.5754159881299
    and rightTopLng>120.29238653195342
      

  3.   

    用/*+index()*/强制索引试试
    可能oracle觉得不用索引快
      

  4.   

    你这字段值太xxx了,所以oracle不用索引
      

  5.   

    你这个字段离散度太高了,不适合索引。索引oracle选择不适用索引
      

  6.   

    补充一点 如果用两个字段 胜致三人字段的作为where的条件 还是比较快的,如果是四个条件就慢了40W条 中查出一百条左右数据要2.8秒
      

  7.   

    oracle自动认为不需要索引,全表扫描更快,帮你选择了。