sql >> Base de Datos >  >> RDS >> Oracle

cliente.pk_name unirse a transacciones.fk_name vs. cliente.pk_id [serie] unirse a transacciones.fk_id [entero]

tienen razón Unirse en un campo de texto CHAR(30), particularmente uno que contenga datos de nombres de personas, será lento, extremadamente ineficiente e increíblemente frágil. Las personas cambian sus nombres (el matrimonio es el ejemplo obvio) y varias personas pueden tener el mismo nombre.

Desea crear índices apropiados en sus tablas para respaldar el orden en el que desea que aparezcan los datos y olvidarse de la agrupación en clústeres. Su procedimiento de optimización del rendimiento suena como un desastre que busca un lugar para suceder. Lo sentimos, pero dejar/crear las tablas de esa manera es buscar problemas.

Comenzaría con un ÍNDICE ÚNICO en customer.id, un ÍNDICE ÚNICO en transacción.ticket_number y un ÍNDICE (para el rendimiento en lugar de la cardinalidad, por lo que hacer cumplir la unicidad no es muy importante) en las transacciones (id, ticket_number DESC), y tomarlo de allí. Los datos se devuelven de la tabla de transacciones en el orden en que aparecen en el índice.

Solo consideraría la agrupación en clústeres cuando se hayan agotado todas las demás vías de optimización de consultas.