我知道 deterministicORDER BY
是当你按UNIQUE INDEX
列排序时,1)这是真的吗?.
我想按列name
和percentage
排序。
有一种可能性是,2个或更多的学生有相同的name
和相同的percentage
,因此,在这种情况下,ORDER BY
将是 * 不确定性 *,因为MySQL
将定义哪一个放在第一位,哪一个放在第二位(不是我),2)这是真的吗?
所以,我的第三个问题是(主要的一个),如果我想按几列排序,但仍然有一个 * 确定性 * 顺序,我应该使用一个UNIQUE INDEX
列 * 在我所有列的末尾 *,例如。ORDER BY name, percentage, id
?
考虑到id
是primary key
我仍然不知道我是否正确地理解了“确定性”和“非确定性”。
2条答案
按热度按时间h7appiyu1#
1.不一定。如果结果在
ORDER BY
列中不包含任何重复项,则顺序将是确定性的。1.是,如果存在重复,则结果是不确定的。
1.是的,向
ORDER BY
添加一个唯一的列使其具有确定性。这是否重要取决于您的应用程序。如果您正在执行基于查询的复制并且使用
INSERT INTO table SELECT ...
,则这一点可能很重要。如果没有确定的顺序,您可能会在主服务器和副本服务器之间获得不一致的AUTO_INCREMENT
ID。xxhby3vn2#
回答您的问题:
1.是的
1.是的,但更具体地说:这是mysql用来对数据进行排序的快速排序算法,导致了随机性。
1.如果你需要一个确定性查询,那么是的,这是一个好方法。