如何通过其中一列快速重新排序MySQL表?

时间:2010-03-29 14:54:49

标签: mysql sorting

哪些最有效的SQL查询会占用现有的MySQL表并按其中一列重新排序?不是选择,但整个表应按一列排序。我想,不知怎的,使用临时表,但最好的方法是什么?

6 个答案:

答案 0 :(得分:6)

即使您确实不需要这样做,也可以使用ALTER TABLE ... ORDER BY ...重新排序表格。但在做之前请三思而后行。然后想几次。然后不要这样做。

答案 1 :(得分:4)

表未排序*。不要假设它们包含任何默认顺序的数据。这就是ORDER BY在查询中的用途,即使没有特定的WHERE子句过滤器。

答案 2 :(得分:3)

最好的方法是将手放在桌面结构上并学习数据库基础知识。

在此列上创建索引

答案 3 :(得分:2)

该表只是其本身没有排序的数据。可以对从该表获取数据的查询进行排序,但表本身不是。

在希望查询排序的列上建立索引将有助于提供最佳查询时间。

答案 4 :(得分:2)

我的0.02c;也许他只是想以更易读的方式重新排序他的桌子。 想象一下这样的表:

 TABLE FOO with ID Char(3) Primary Key,DESCRIPTION Varchar

有4行

ID  | DESCRIPTION
001 | Test1
004 | Test4
003 | Test3
002 | Test2

可能是以后插入了行003和002(创建表时不知道), 所以OP希望以更易读的方式重新排序记录(我知道他可以选择订单子句)。

在这种情况下,我将备份表(SELECT * INTO backup_FOO FROM FOO),删除所有约束,截断它并重新加载它由OP首选列排序。

答案 5 :(得分:1)

最简单的方法是在该列中添加一个键。

ALTER TABLE表ADD KEY(column);

然后,您可以使用EXPLAIN SELECT来显示您正在使用查询的密钥。

如果表中不断添加和删除行,您还可以运行OPTIMIZE TABLE表以获得良好的度量。