唯一约束是否会更改MySQL中返回值的排序顺序?

时间:2017-07-11 21:09:17

标签: mysql sorting

表上的UNIQUE约束是否会改变SELECT语句返回的默认排序?

如果是这样,为什么PK的排序不会覆盖UNIQUE约束的排序?我的理解是复合UNIQUE约束为这些列创建一个复合索引,从而创建一个BTree。但PK不是一个优先考虑的附加BTree吗?

当然,如果我需要排序的东西我可以SELECT [columns] FROM table ORDER BY column,但我不会问如何返回排序值。

实施例

如果我有一个如此定义的MySQL表a

CREATE TABLE `a` (
    `a_id` INT(11) NOT NULL AUTO_INCREMENT,
    `pixel_x` INT(11) NOT NULL,
    `pixel_y` INT(11) NOT NULL,
    PRIMARY KEY (`a_id`),
    UNIQUE KEY `pixel_x_pixel_y_UNIQUE` (`pixel_x` , `pixel_y`)
)

按此顺序输入一些数据:

a_id  pixel_x  pixel_y
====  =======  =======
1     548      553
2     2018     2035       <---  -- 2nd data entered
3     1319     1231
4     1998     651

当我SELECT * FROM a时,我得到以下内容:

a_id  pixel_x  pixel_y
====  =======  =======
1     548      553
3     1319     1231
4     1998     651
2     2018     2035       <---  -- 2nd data entered, but last in
                                -- the sort order because it's the
                                -- highest `pixel_x` value.

0 个答案:

没有答案