Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak zoptymalizować zapytanie Oracle, które ma to_char w klauzuli where dla daty?

Gdybyś wygenerował plan wykonania dla Twojego pierwszego zapytania ...

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'
/

... zobaczysz, że wykonuje pełne skanowanie tabeli. To dlatego, że to_char() uniemożliwia korzystanie z indeksu w dniu CREATE DATE.

Nie mówisz, ile czasu zajęło zwrócenie wyników po uruchomieniu...

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')
/

... ale spodziewam się, że było to znacznie bliższe 0,14 sekundy niż 4 minuty.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ładowanie dużych ilości danych do bazy danych Oracle SQL

  2. Październik 2014Procesor ulega awarii ArcGIS Desktop

  3. Oracle:Aktualizacja kolumny tabeli przy użyciu ROWNUM w połączeniu z klauzulą ​​ORDER BY

  4. PL/SQL na kliencie SQL SquirreL 3.7.1

  5. Czy EF6 może generować moje obiekty modelu z kursora ref zwróconego przez procedurę składowaną Oracle?