【索引】反向索引--條件 範圍查詢(二)

楊奇龍發表於2010-09-07
當 where 條件中 含有 <> 條件或者 not in 時 走INDEX FAST FULL SCAN 執行計劃中的 限制條件 not in 轉換為 <>
PHP code:


SQL
select object_id from t1 where object_id <> 1;

53519 rows selected.



Execution Plan

----------------------------------------------------------

Plan hash value711836071

-----------------------------------------------------------------------------

Id  Operation            Name Rows  Bytes Cost (%CPU)| Time     |

-----------------------------------------------------------------------------

|   
SELECT STATEMENT     |      | 53518 |   261K|    29   (4)| 00:00:01 |

|*  
|  INDEX FAST FULL SCANI_ID 53518 |   261K|    29   (4)| 00:00:01 |

-----------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

   
filter(&quot;OBJECT_ID&quot;<>1)



Statistics

----------------------------------------------------------

          
1  recursive calls

        。。。。。。

      53519  rows processed



SQL
select object_id from t1 where object_id not in (45,65,95,32,1,2,5,64,83);

53511 rows selected.

Execution Plan

----------------------------------------------------------

Plan hash value711836071

-----------------------------------------------------------------------------

Id  Operation            Name Rows  Bytes Cost (%CPU)| Time     |

-----------------------------------------------------------------------------

|   
SELECT STATEMENT     |      | 53510 |   261K|    31  (10)| 00:00:01 |

|*  
|  INDEX FAST FULL SCANI_ID 53510 |   261K|    31  (10)| 00:00:01 |

-----------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

   
filter(&quot;OBJECT_ID&quot;<>45 AND &quot;OBJECT_ID&quot;<>65 AND &quot;OBJECT_ID&quot;<>95

              
AND &quot;OBJECT_ID&quot;<>32 AND &quot;OBJECT_ID&quot;<>64 AND &quot;OBJECT_ID&quot;<>83 AND

              &
quot;OBJECT_ID&quot;<>AND &quot;OBJECT_ID&quot;<>AND &quot;OBJECT_ID&quot;<>1)

where 條件中含有 = 號 或in 時  走INDEX RANGE SCAN 注意執行計劃中的限制條件 in 被轉換為 =
PHP code:


SQL
select object_id from t1 where object_id =55 or object_id =65;

Execution Plan

----------------------------------------------------------

Plan hash value3991740069

--------------------------------------------------------------------------

Id  Operation         Name Rows  Bytes Cost (%CPU)| Time     |

--------------------------------------------------------------------------

|   
SELECT STATEMENT  |      |     |    10 |     3   (0)| 00:00:01 |

|   
|  INLIST ITERATOR  |      |       |       |            |          |

|*  
|   INDEX RANGE SCANI_ID |     |    10 |     3   (0)| 00:00:01 |

--------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

   
access(&quot;OBJECT_ID&quot;=55 OR &quot;OBJECT_ID&quot;=65)

Statistics

----------------------------------------------------------

          
1  recursive calls

        。。。。。。

          2  row
PHP code:


SQL
select object_id from t1 where object_id in (45,65,95,32,1,2,5,64,83);

8 rows selected.



Execution Plan

----------------------------------------------------------

Plan hash value3991740069

--------------------------------------------------------------------------

Id  Operation         Name Rows  Bytes Cost (%CPU)| Time     |

--------------------------------------------------------------------------

|   
SELECT STATEMENT  |      |     |    45 |     9   (0)| 00:00:01 |

|   
|  INLIST ITERATOR  |      |       |       |            |          |

|*  
|   INDEX RANGE SCANI_ID |     |    45 |     9   (0)| 00:00:01 |

--------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

   
access(&quot;OBJECT_ID&quot;=OR &quot;OBJECT_ID&quot;=OR &quot;OBJECT_ID&quot;=OR

              &
quot;OBJECT_ID&quot;=32 OR &quot;OBJECT_ID&quot;=45 OR &quot;OBJECT_ID&quot;=64 OR &quot;OBJECT_ID&quot;=65 OR

              &
quot;OBJECT_ID&quot;=83 OR &quot;OBJECT_ID&quot;=95)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-672908/,如需轉載,請註明出處,否則將追究法律責任。

相關文章