Если у вас не бывает перетасовки всего списка, а перемещение лишь одной записи (при том что это происходит не особенно часто), я бы порекомендовал вам выполнить сортировку в два запроса
-- к примеру новый ранг = 10
-- id сдвигаемой записи 100500
UPDATE `my_table` SET `ordering` = `ordering` + 1 WHERE `ordering`>=10;
UPDATE `my_table` SET `ordering` = 10 WHERE `id`=100500;