Al resolver problemas en un servidor con una espera de E/S muy alta, observo que hay muchas E/S provenientes de consultas que hacen SELECT max(x) FROM t WHERE y = ?
.Escaneo del índice hacia atrás en comparación con el escaneo del índice
Mi índice es btree (x, y)
.
Me di cuenta de que el plan de consulta hace Index Scan Backward para obtener el máximo. ¿Es tan malo? ¿Debo preocuparme por eso y quizás agregar otro índice (revertido)? ¿O hay una mejor manera de crear un índice adecuado para este tipo de consultas?
Creando un índice en (y, x) costo de consulta reducido de 10k a 300 y tiempo de consulta enormemente reducido. Tener x DESC no hace ninguna diferencia. ¡Gracias por el consejo! – ibz
Impresionante, gracias por este señor! Tuve un problema similar e impacto de rendimiento comparable después de cambiar el índice. – TheDeadSerious
https://stackoverflow.com/users/271959/frank-heikens ¿Puede explicar por qué un índice en (y, x) tendrá un tiempo de consulta menor que un índice en (x, y). Gracias. – nisanth074