Oracle開發誤區(here)

LuiseDalian發表於2014-01-15

1.避免對列進行運算

在編寫SQL時,要儘量避免對列進行運算,要善於通過等價改寫消除對列運算的SQL

這樣可以避免索引無法使用,從而提高語句效率。

點選(此處)摺疊或開啟

  1. DROP TABLE ljb_test;
  2. CREATE TABLE ljb_test(ID NUMBER, log_time DATE);
  3. INSERT INTO ljb_test SELECT ROWNUM, SYSDATE - ROWNUM FROM dual CONNECT BY ROWNUM <= 1000000;
  4. CREATE INDEX idx_ljbtest_logtime ON ljb_test(log_time);

  5. --下面的查詢無法使用索引
  6. SELECT * FROM ljb_test WHERE TRUNC(log_time) = to_date(\'2013-12-25\', \'YYYY-MM-DD\');

  7.         ID LOG_TIME
  8. ---------- ---------
  9.            6 25-DEC-13



點選(此處)摺疊或開啟

  1. --使用索引, 邏輯讀顯著下降
  2. SELECT * FROM ljb_test
  3.   WHERE log_time >= to_date(\'2013-12-25\', \'YYYY-MM-DD\')
  4.   AND log_time < to_date(\'2013-12-25\', \'YYYY-MM-DD\') + 1;

  5.         ID LOG_TIME
  6. ---------- ---------
  7.            6 25-DEC-13




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

相關文章