secondo me si può fare con una sola query.
Naturalmente il campo indice NON deve essere chiave primaria (anche perché è concettualmente sbagliato modificare la chiave).
Supponiamo tu debba scambiare gli indici 4 e 2.
Ti calcoli la somma (6) e poi fai
UPDATE tabella SET indice=$somma-indice WHERE(indice=2 OR indice=4);
Se sai per certo che lo scambio avverrà tra elementi consecutivi, la condizione del WHERE può essere sostituita con un BETWEEN.

Rispondi quotando