Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да оптимизирате заявка на Oracle, която има to_char в клауза where за дата

Ако трябваше да генерирате план за изпълнение за първото ви запитване...

explain plan for 
SELECT bunch,of,stuff,create_date
FROM myTable
WHERE TO_CHAR (create_date,'MM/DD/YYYY)' >= '04/10/2010'
AND TO_CHAR (create_date, 'MM/DD/YYYY') <= '04/10/2010'
/

... ще видите, че прави пълно сканиране на таблица. Това е така, защото to_char() предотвратява използването на вашия индекс на CREATE DATE.

Не казвате колко време отне връщането на резултатите, когато стартирахте...

SELECT bunch,of,stuff,create_date
FROM myTable
WHERE             
create_date >= to_timestamp('04/10/2010 00:00:00.000000','MM/DD/YYYY HH24:MI:SS.FF') 
AND 
create_date <= to_timestamp('04/10/2010 23:59:59:123000','MM/DD/YYYY HH24:MI:SS.FF')
/

... но очаквам, че е много по-близо до 0,14 секунди, отколкото до 4 минути.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle 12c Топ нови функции

  2. Не мога да използвам обвързваща променлива в datagrip

  3. Oracle Trigger ORA-04098:тригерът е невалиден и неуспешно повторно валидиране

  4. Въведете голямо съдържание в базата данни на Oracle

  5. можем ли да назовем ограничение по подразбиране в Oracle