Mam bazę danych oracle wypełnioną milionami rekordów. Próbuję napisać zapytanie SQL, która zwraca pierwszy „N” sortowanie zapisy (powiedzmy 100 rekordów) z bazy danych na podstawie określonego warunku.Jak wybrać pierwsze rekordy "N" z bazy danych zawierającej miliony rekordów?
SELECT *
FROM myTable
Where SIZE > 2000
ORDER BY NAME DESC
Następnie programowo wybrać pierwsze rekordy n.
Problem z tego podejścia jest:
- wyniki zapytań na pół miliona ewidencji i „Zamów przez nazwę” powoduje wszystkie rekordy mają być sortowane na nazwisko w kolejności malejącej Ten sortowania bierze dużo czasu (prawie.. 30-40 sekund ds. Jeśli pominę ORDER BY, zajmie to tylko 1 sekundę).
- Po sortowaniu interesuje mnie tylko pierwsze N (100) rekordów. Więc sortowanie kompletnych rekordów nie jest użyteczne.
Moje pytania są następujące:
- Czy możliwe jest określenie 'n' w samej zapytania? (więc sortowanie dotyczy tylko N rekordów, a zapytanie staje się szybsze).
- Lepszy sposób w SQL w celu ulepszenia zapytania do sortowania tylko elementów i powrotu w szybki czas .
Niesamowite, działa! – Oliver