【问题标题】:new data inserted in the middle rows accident中间行意外插入新数据
【发布时间】:2013-04-13 17:02:26
【问题描述】:

我只是在我的网站中插入带有表单的数据,通常数据将插入到最后一行中,例如: 自动增量名称

1 a
2 b
3 c
4 d
5 e

但是,当我上次插入新数据时,它插入了表格的中间行,看起来像:

17 data17
30 data30
18 data18
19 data19
20 data20

已插入表格中间行的最新数据(data30)。 它很少发生在我身上(仍然发生)为什么会发生这种情况?以及我将来如何防止这件事发生?谢谢。

【问题讨论】:

  • 为什么会出现这个问题?取回数据时为什么不按 ID 排序?
  • 看看this是否有帮助。

标签: mysql insert row


【解决方案1】:

您看到的是引擎返回的结果。早早获取哪个记录和稍后获取哪个记录几乎不是问题,因为这取决于很多问题。一方面,不要认为您的数据库表是 FoxPro 之类的顺序文件。它比那更复杂。接下来,对于每个返回数据的查询,使用 Order by 子句来避免这些实例。

所以总是使用:

select columns from table order by column

以上将确保您以您需要的方式获取数据,并且当数据库引擎在缓存中找到较晚的记录同时从另一个数据库文件中的慢速媒体获取较旧的记录时不会感到惊讶。如果您阅读了 RDBMS 概念的基础知识,则会讨论这些内容,因为您还需要研究 MySQL 内部的工作原理。

我发现这篇很棒的文章讨论了现代数据库查询引擎的许多精彩功能。 http://thinkingmonster.wordpress.com/mysql/mysql-architecture/

虽然整篇文章都很好地讨论了这个话题,但是你可能会特别注意讨论Record Cache的部分。

【讨论】:

    猜你喜欢
    • 2016-06-16
    • 2015-08-12
    • 1970-01-01
    • 2022-01-10
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    相关资源
    最近更新 更多