我需要按特定顺序插入数据行。有时我忘记按时插入行,我必须稍后再插入。其他行已经占据了它的位置,直到现在我手动(当然以编程方式)更改不同行数的索引 - 它可能是几行或数百行。这不是很有效,我正在寻找另一种方法。我的想法是按日期排序并创建一个“日索引”数字来仅重新排序当天的记录,但我在徘徊......有没有 mysql 方法来重新排序行?那就是通知mysql需要的行位置,然后让它更新主键?
问问题
885 次
2 回答
1
您认为的实际上是解决方案。如果尚未创建日期列,然后在该字段上创建索引,也在查询中使用 Order by。除了手动没有别的办法,即使有也不建议玩MYSQL的存储行的方式,因为行存储是由DB Engine完成的,玩起来不太理想,因为它们存储行最好最佳方式,那么为什么要为这么小的事情搞砸他们的效率。
于 2013-08-05T07:43:29.747 回答
1
我认为你需要看看你的桌子设计。对于大多数应用程序来说,这实际上不是问题,因为它会在一开始就解决。
现在,您需要向表中添加一个 DateTime 列,并为已经存在的数据使用一些合理的值对其进行初始化。添加新行时,将每个新行中的 DateTime 列设置为实际的 DateTime。如果您必须延迟添加一行,请将 DateTime 设置为应该添加记录的时间。
当您查询表时,请使用ORDER BY myDateTime
(或您决定调用的任何名称)。您的行应该以正确的顺序出现。
对于小型表(少于几千行),索引可能没有多大帮助。对于较大的表,您应该索引 DateTime 列。您必须运行一些测试才能看到最有效的方法。
于 2013-08-05T08:45:23.133 回答