Si esto va a ser un requisito de corta duración, usar una declaración de caso. Sin embargo, si cree que puede estar por un tiempo, y siempre va a ser el orden orange/apple/strawberry
(o incluso si no, consulte a continuación), es posible que desee pensar en sacrificar algo de espacio en disco para ganar algo de velocidad.
Cree una nueva columna en su tabla llamada or_ap_st
y use un disparador de inserción/actualización para completarla con el número 1, 2 o 3, dependiendo del valor de la columna de su fruta. Luego indexe en él.
Como la única vez que cambian los datos en esa columna es cuando cambia la fila, ese es el mejor momento para hacerlo. El costo se incurrirá en un pequeño número de escrituras en lugar de en un gran número de lecturas, por lo tanto, se amortiza en las declaraciones select
.
Su consulta será entonces un tan rápidos:
select field1, field2 from table1
order by or_ap_st;
sin funciones por fila matando el rendimiento.
Y, si quiere otros tipos de órdenes también, bien, es por eso que llamé a la columna or_ap_st
. Puede agregar tantas otras columnas de clasificación como necesite.
¡Hah! Como si fuera a confiar en cualquier SQL proveniente de alguien llamado LittleBobbyTables :-) – paxdiablo
@pax - :-) –
LittleBobbyTables
+1 para la opción de mesa, siempre más flexible – RichardTheKiwi