哪些最有效的SQL查询会占用现有的MySQL表并按其中一列重新排序?不是选择,但整个表应按一列排序。我想,不知怎的,使用临时表,但最好的方法是什么?
答案 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表以获得良好的度量。