sql >> Databasteknik >  >> RDS >> Oracle

Hastigheten för sökfrågor i Oracle

Det största problemet med fall 2 är att i många fall måste hela frågeresultatuppsättningen erhållas och sedan sorteras före de första N raderna kan returneras - om inte ORDER BY-kolumnerna är indexerade och Oracle kan använda indexet för att undvika sortering. För en komplex fråga och en stor uppsättning data kan detta ta lite tid. Det kan dock finnas några saker du kan göra för att förbättra hastigheten:

  1. Försök att se till att inga funktioner anropas i den inre SQL - dessa kan anropas 5 miljoner gånger bara för att returnera de första 20 raderna. Om du kan flytta dessa funktionsanrop till den yttre frågan kommer de att anropas färre.
  2. Använd ett FIRST_ROWS_n tips för att få Oracle att optimera för att du aldrig kommer att returnera all data.

EDIT:

En annan tanke:du presenterar för närvarande användaren en rapport som kan returnera tusentals eller miljontals rader, men användaren kommer aldrig realistiskt att bläddra igenom dem alla. Kan man inte tvinga dem att välja en mindre mängd data t.ex. genom att begränsa det valda datumintervallet till 3 månader (eller vad som helst)?



  1. MySQL kumulativ produktgrupp efter

  2. SQL-anslutningsfråga

  3. Hur får man tabellskript i Oracle SQL Developer?

  4. Ta bort reverseringspar med SQL