gpt4 book ai didi

mysql - 在同一个表上添加两个复合索引的异常行为

转载 作者:行者123 更新时间:2023-11-29 13:44:19 25 4
gpt4 key购买 nike

我不确定复合索引是否是正确的词;我的意思是我有一个由多个列组成的索引。

问题:

我的主键由两列组成,它们工作正常; A 列和 B 列。当我尝试在包含两个columnA 和columnC 的同一个表上创建另一个索引时,我遇到了麻烦。一旦我创建第二个索引,它就会接管并成为聚集索引,因此表将按它排序,忽略首先创建的主键索引。

可能的解决方案:

我希望表按 ColumnA 和 ColumnB 上的第一个索引排序,但我将第二个索引用于其他目的。为了解决这个问题,我可以在第二个表中复制数据,其中 ColumnA 和 ColumnC 是唯一的索引,但如果可以避免,我不想这样做。

系统信息: MySQL

最佳答案

在 MySQL(以及与此相关的任何其他 SQL 引擎)中,无法保证您的表按任何特定顺序排序。确保排序的唯一方法是使用 ORDER BY 子句。

现在,如果您不使用 ORDER BY,则无法保证排序的原因是:当您插入或删除行时,服务器可以自由地为新插入重用“孔”。此外,服务器可以首先从缓存或当前磁盘头所在的位置传递行,如果这样可以获得更好的性能 - 如果您使用 LIMIT 而不使用 ORDER BY,这可能特别有用>.

所以,长话短说,只需在您的选择中始终使用 ORDER BY ,您的问题就会消失。

关于mysql - 在同一个表上添加两个复合索引的异常行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17637664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com