У меня простой вопрос:
У меня есть postgresql
база данных: Scores(score integer)
.
Как бы я получил самые высокие 10 баллов быстрее?
ОБНОВИТЬ:
Я буду делать этот запрос несколько раз и стремлюсь к самому быстрому решению.
sql
postgresql
sql-limit
Джои Франклин
источник
источник
explain analyze
?Ответы:
Для этого вы можете использовать лимит
Если производительность важна (когда это не так ;-) ищите индекс на счет.
Начиная с версии 8.4, вы также можете использовать стандарт ( SQL: 2008 )
fetch first
Как указал @Raphvanns, это даст вам
first 10 rows
буквально. Чтобы удалить повторяющиеся значения, вы должны выбратьdistinct
строки, напримерSQL Fiddle
источник
fetch first X rows only
это ответ, который я искал - спасибо из далекого будущего!Кажется, вы ищете
ORDER BY
вDESC
конечном порядке с предложением LIMIT :Конечно, это
SELECT *
может серьезно повлиять на производительность, поэтому используйте его с осторожностью.источник
Обратите внимание, что если есть связи в первых 10 значениях, вы получите только первые 10 строк, а не 10 лучших значений с предоставленными ответами. Пример: если верхние 5 значений 10, 11, 12, 13, 14, 15, но ваши данные содержат 10, 10, 11, 12, 13, 14, 15, вы получите только 10, 10, 11, 12, 13, 14 как ваш топ 5 с
LIMIT
Вот решение, которое будет возвращать более 10 строк, если есть связи, но вы получите все строки, которые
some_value_column
технически находятся в топ-10.источник
источник