sql >> Databáze >  >> RDS >> Oracle

Pořadí hodnocení klauzule Oracle SQL

Výběrový seznam nemůže být vždy vyhodnocen jako poslední, protože ORDER BY může používat aliasy, které jsou definovány ve výběrovém seznamu, takže musí být provedeny později. Například:

SELECT foo+bar foobar FROM table1 ORDER BY foobar

Řekl bych, že obecně by pořadí provádění mohlo být něco takového:

  • OD
  • KDE
  • GROUP BY
  • VYBRAT
  • MÍT
  • OBJEDNEJTE PODLE

Klauzule GROUP BY a WHERE lze zaměnit beze změny výsledku, stejně jako klauzule HAVING a ORDER BY.

Ve skutečnosti jsou věci složitější, protože databáze může změnit pořadí provádění podle různých plánů provádění. Dokud výsledek zůstane stejný, nezáleží na tom, v jakém pořadí se provede.

Všimněte si také, že pokud je pro klauzuli ORDER BY zvolen index, řádky mohou být již při čtení z disku ve správném pořadí. V tomto případě se klauzule ORDER BY ve skutečnosti vůbec neprovede.



  1. Převeďte datový typ časového razítka do unixového časového razítka Oracle

  2. Jak převést prázdná místa na hodnoty null pomocí SQL Server?

  3. Kompilace rozšíření pg_repack v binárním formátu instalace PostgreSQL

  4. Poskytovatel OLE DB 'Microsoft.Jet.OLEDB.4.0' nelze použít pro distribuované dotazy