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

Rychlost stránkovaných dotazů v Oracle

Hlavním problémem Případu 2 je to, že v mnoha případech je třeba získat celou sadu výsledků dotazu a poté ji seřadit před prvních N řádků lze vrátit - pokud sloupce ORDER BY nejsou indexovány a Oracle může index použít k tomu, aby se vyhnul řazení. U složitého dotazu a velkého souboru dat to může nějakou dobu trvat. Může však existovat několik věcí, které můžete udělat pro zlepšení rychlosti:

  1. Snažte se zajistit, aby ve vnitřním SQL nebyly volány žádné funkce – mohou být volány 5 milionůkrát, jen aby se vrátilo prvních 20 řádků. Pokud můžete tato volání funkcí přesunout do vnějšího dotazu, budou se volat méně.
  2. Pomocí rady FIRST_ROWS_n pobídněte Oracle k optimalizaci s ohledem na skutečnost, že nikdy nevrátíte všechna data.

UPRAVIT:

Další myšlenka:aktuálně předkládáte uživateli zprávu, která mohla vrátí tisíce nebo miliony řádků, ale uživatel je nikdy reálně neprojde všechny. Nemůžete je donutit k výběru menšího množství dat, např. omezením vybraného časového období na 3 měsíce (nebo cokoliv jiného)?



  1. 6 způsobů, jak zkontrolovat, zda existuje tabulka na serveru SQL (příklady T-SQL)

  2. MySQL UPDATE přidá data do sloupce

  3. Postgresql:dblink v uložených funkcích

  4. Mohou odkazy na cizí klíč obsahovat hodnoty NULL v PostgreSQL?