Eu tenho uma tabela de posts que tem a coluna post_order. Eu armazeno a ordem de cada postagem nele. quando altero a ordem de uma linha de 25 para 15, devo atualizar toda a linha de 15 para o final. É bom para poucas linhas, mas em milhares de linhas é pior.
Existe algum design melhor para ordenar posts, que seja mais eficiente?
Você pode alterar sua
post_order
coluna para afloat
e atualizar o valor com um cálculo usando ospost_order
valores das postagens entre as quais deseja terminar.Exemplo:
Se você quiser mover PostID = 3 para ser classificado entre 1 e 2, seria
Aqui está um SQL Fiddle com algum código que move os posts usando um procedimento armazenado onde você passa
PostID
o post a ser movido ePostID
o post que você quer que fique atrás.SQL Fiddle
Configuração do esquema do MySQL 5.5.30 :
Consulta 1 :
Resultados :