表上的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.