Se questo sta per essere un requisito di breve durata, utilizzare un'istruzione caso. Tuttavia, se pensi che potrebbe essere in giro per un po ', e sarà sempre dell'ordine orange/apple/strawberry
(o anche se non lo fosse - vedi sotto), potresti pensare di sacrificare lo spazio su disco per guadagnare un po' di velocità.
Creare una nuova colonna nella tabella denominata or_ap_st
e utilizzare un trigger di inserimento/aggiornamento per popolare con il numero 1, 2 o 3, a seconda del valore della colonna di frutta. Quindi indicizzalo.
Poiché l'unica volta che i dati in quella colonna cambieranno è quando la riga cambia, quello è il momento migliore per farlo. Il costo verrà quindi sostenuto su un numero ridotto di scritture anziché su un numero elevato di letture, quindi ammortizzato sulle dichiarazioni select
.
Vostri criteri sarà quindi un veloce come il fulmine:
select field1, field2 from table1
order by or_ap_st;
senza funzioni per-riga uccidendo le prestazioni.
E, se si desidera anche altri ordinamenti, beh, è per questo che ho chiamato la colonna or_ap_st
. Puoi aggiungere tutte le altre colonne di ordinamento di cui hai bisogno.
Hah! Come ho intenzione di fidarsi di qualsiasi SQL provenienti da qualcuno chiamato LittleBobbyTables :-) – paxdiablo
@pax - :-) –
LittleBobbyTables
1 per l'opzione tavolo, sempre più flessibile – RichardTheKiwi