Tengo una pregunta simple:
Tengo una postgresqlbase de datos: Scores(score integer).
¿Cómo obtendría los 10 puntajes más altos el más rápido?
ACTUALIZAR:
Haré esta consulta varias veces y apunto por la solución más rápida.
sql
postgresql
sql-limit
Joey Franklin
fuente
fuente

explain analyze?Respuestas:
Para esto puedes usar limit
Si el rendimiento es importante (cuando no lo es ;-) busque un índice de puntuación.
A partir de la versión 8.4, también puede usar el estándar ( SQL: 2008 )
fetch firstComo señaló @Raphvanns, esto te dará
first 10 rowsliteralmente. Para eliminar valores duplicados, debe seleccionardistinctfilas, p. Ej.Violín de SQL
fuente
fetch first X rows onlyes la respuesta que estaba buscando, ¡gracias desde el futuro lejano!Parece que está buscando
ORDER BYenDESCorden final con la cláusula LIMIT :Por supuesto,
SELECT *podría afectar seriamente el rendimiento, así que úselo con precaución.fuente
Tenga en cuenta que si hay vínculos en los 10 valores principales, solo obtendrá las 10 filas superiores, no los 10 valores principales con las respuestas proporcionadas. Ej: si los 5 valores principales son 10, 11, 12, 13, 14, 15 pero sus datos contienen 10, 10, 11, 12, 13, 14, 15, solo obtendrá 10, 10, 11, 12, 13, 14 como tu top 5 con un
LIMITAquí hay una solución que devolverá más de 10 filas si hay empates, pero obtendrá todas las filas que
some_value_columntécnicamente se encuentran en el top 10.fuente
fuente