sql >> Database teknologi >  >> RDS >> Oracle

Hvordan man optimerer en Oracle-forespørgsel, der har to_char in where-klausul for dato

Hvis du skulle generere en eksekveringsplan til din første forespørgsel ...

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

... du ville se, at den laver en fuld bordscanning. Det er fordi to_char() forhindrer brugen af ​​dit indeks på CREATE DATE.

Du siger ikke, hvor lang tid det tog at returnere resultaterne, da du kørte ...

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

... men jeg forventer, at det var meget tættere på 0,14 sekunder end 4 minutter.



  1. MySQL 1443:hvad betyder det?

  2. Hvordan indtaster man nylinjetegn i Oracle?

  3. Hent database eller enhver anden fil fra det interne lager ved hjælp af run-as

  4. Konfig SQL*Plus for ikke at returnere andet end data