Если это будет недолгим требованием, используйте оператор case. Однако, если вы думаете, что это может быть какое-то время, и это всегда будет порядка orange/apple/strawberry
(или даже если нет - см. Ниже), вы можете подумать о том, чтобы пожертвовать некоторым дисковым пространством, чтобы получить некоторую скорость.
Создайте в вашей таблице новый столбец с именем or_ap_st
и используйте триггер вставки / обновления, чтобы заполнить его числами 1, 2 или 3, в зависимости от значения вашего столбца фруктов. Тогда индекс на это.
Поскольку данные в этом столбце изменяются только при изменении строки, это лучшее время для этого. Затем стоимость будет понесена при небольшом количестве операций записи, а не при большом количестве операций чтения, следовательно, амортизируется по операторам select
.
Ваш запрос будет невероятно быстрым:
select field1, field2 from table1
order by or_ap_st;
без функций для каждой строки, убивающих производительность.
И, если вам нужны и другие порядки сортировки, вот почему я назвал столбец or_ap_st
. Вы можете добавить столько столбцов сортировки, сколько вам нужно.