Saya punya pertanyaan sederhana:
Saya memiliki postgresql
database yang: Scores(score integer)
.
Bagaimana saya mendapatkan skor tertinggi 10 tercepat?
MEMPERBARUI:
Saya akan melakukan kueri ini beberapa kali dan mengincar solusi tercepat.
sql
postgresql
sql-limit
Joey Franklin
sumber
sumber
explain analyze
?Jawaban:
Untuk ini, Anda dapat menggunakan batas
Jika kinerja penting (padahal bukan ;-) cari indeks skor.
Mulai dengan versi 8.4, Anda juga dapat menggunakan standar ( SQL: 2008 )
fetch first
Seperti yang ditunjukkan oleh @Raphvanns, ini akan memberi Anda arti
first 10 rows
sebenarnya. Untuk menghapus nilai duplikat, Anda harus memilihdistinct
baris, misalnyaSQL Fiddle
sumber
fetch first X rows only
adalah jawaban yang saya cari - terima kasih dari masa depan yang jauh!Sepertinya Anda mencari
ORDER BY
diDESC
berakhir pesanan dengan LIMIT klausa:Tentu saja
SELECT *
dapat memengaruhi kinerja secara serius, jadi gunakan dengan hati-hati.sumber
Perhatikan bahwa jika ada ikatan dalam 10 nilai teratas, Anda hanya akan mendapatkan 10 baris teratas, bukan 10 nilai teratas dengan jawaban yang diberikan. Mis: jika 5 nilai teratas adalah 10, 11, 12, 13, 14, 15 tetapi data Anda berisi 10, 10, 11, 12, 13, 14, 15 Anda hanya akan mendapatkan 10, 10, 11, 12, 13, 14 sebagai top 5 Anda dengan a
LIMIT
Berikut adalah solusi yang akan mengembalikan lebih dari 10 baris jika ada ikatan tetapi Anda akan mendapatkan semua baris di mana
some_value_column
secara teknis berada di atas 10.sumber
sumber