我一直在寻找一种方法来对mysql表中的项进行排序。 这是表格的简化版本
sqlfiddle => http://sqlfiddle.com/#!2/78521b/3/0
sort
因此,一旦用户对项目(卡片)进行了排序,我想在SET @n=0;
UPDATE `test_sort` SET `sort` = @n := @n + 1 ORDER BY `sort`
列上运行查询,以使其保持一致。
此处找到解决方案:MySQL update a field with an incrementing variable
{{1}}
问题:如果在数千(或数百万)条记录中使用该查询,该查询将如何行动(性能明智)?
答案 0 :(得分:1)
不要在表格中存储sort
;将它存储在一个单独的表中。此外,不要UPDATE
该表,重新创建它。此外,使用以下内容来避免任何停机时间:
CREATE TABLE New SELECT ... -- generate new sort order
RENAME TABLE Sort TO Old, New To Sort;
DROP TABLE Old;