配置MySQL表按UNIQUE索引排序

时间:2018-02-18 23:02:25

标签: mysql sql database

我有一个包含以下字段的MySQL表:

Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(255) NOT NULL UNIQUE,
ReleaseDate DATETIME(6) NOT NULL DEFAULT "1970-01-01"

此表的默认顺序是Id,因为它是主键。当我删除Id列并使Name成为主键时,表按字母顺序排序,这就是我想要的。

Id作为主键,NameUNIQUE索引,表继续按照Id的增加顺序排列。我知道我可以在显示表时使用ORDER BY Name,但有没有办法将表本身配置为始终按字母顺序排列,并完全忽略Id列的顺序?

2 个答案:

答案 0 :(得分:4)

在SQL中没有理由依赖数据库的物理顺序。关系表在概念上更像是无序集而不是有序列表。假设某种物理秩序可能导致不可预测的结果。

如果您总是想要提供表格的订购版本,则可以使用视图。

CREATE VIEW orderedView AS
SELECT * FROM myTable ORDER BY myColumn

答案 1 :(得分:1)

在关系数据库中,表通常由PRIMARY KEY物理排序。这样,查询的性能就会提高。因此,如果您希望表格按照" name"订购,则必须声明" name"喜欢你的主键。如果没有必要,你应该创建一个视图。