Oracle 12c In-Memory Option - 9

tolywang發表於2014-02-14

15.  非"="條件下會發生什麼?

前面講到的where條件中都是=條件,如果是一個範圍,比如lo_custkey > 5641,是否可以從
min/max purning中獲益呢 ? 

set timing on 

SELECT display_name, value
FROM v$mystat m, v$statname n
WHERE m.statistic# = n.statistic#  AND  display_name IN
( 'IMC Preds all rows pass minmax',
  'IMC Preds some rows pass minmax',
  'IMC Preds no rows pass minmax' );

SELECT Max(lo_supplycost) most_expensive_bluk_order
FROM lineorder
WHERE lo_quantity > 42;

SELECT display_name, value
FROM v$mystat m, v$statname n
WHERE m.statistic# = n.statistic#  AND  display_name IN
( 'IMC Preds all rows pass minmax',
  'IMC Preds some rows pass minmax',
  'IMC Preds no rows pass minmax' );

取消In-Memory Column Store後,查詢buffer cache得到查詢結果。

ALTER SESSION set inmemory_query = disable;

SELECT /* BUFFER CACHE */
Max(lo_supplycost) most_expensive_bluk_order
FROM lineorder
WHERE lo_quantity > 42;

ALTER SESSION set inmemory_query = enable;

In-Memory Column Store仍然比buffer cache查詢要來的高效,因為它僅僅只需掃描一個列lo_quantity,
儘管where 語句中不是“=”條件,我們還是能使用 In-Memory storage index。

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

相關文章