我有一个包含 10 条记录和一个 ID 字段作为主键的表。
我的许多查询也不包括 ORDER BY id
。例如,它们看起来像:
SELECT * FROM `branch`
当我错误地删除了ID为1
的记录时,我的问题就开始了,然后为了纠正我的错误,我插入了一条具有相同ID和内容的记录。
但是现在,在我所有的查询中,后来插入的行是最后一行。
我的意思是,ID 的顺序是:2,3,4,5,6,7,8,9,10,1。
我想要的是,让返回的记录按 ID 排序,就像删除之前一样,但我不能在所有查询中添加 ORDER BY id
,因为有很多查询,例如这在许多文件中。
请帮帮我, 谢谢你,奥姆里。
最佳答案
要解决您的问题,您可以SET foreign_key_checks=0
然后删除您的表并重新创建它,按顺序插入从 ID 1 到 10 的值,然后再次 SET foreign_key_checks=1
。这很可能会解决您的问题。
但我的建议是始终使用ORDER BY
。
因为您不能信任作为 SELECT
结果从 MySQL 返回的记录的顺序。默认情况下,MySQL 按照存储结果的顺序返回结果,并将记录存储在发现“漏洞”的任何位置。
这意味着如果您进行批量插入,它“可能”占用顺序内存分配。现在,如果您从该集合中删除一条记录,则会产生一个空洞,该空洞将被后续插入所占用,并且它在 SELECT
中反射(reflect)相同。
关于mysql - sql缓存内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33853276/