我有一个注释应用程序,用户可以在其中创建注释,然后将它们同步到列noteId(这是auto_incrementing字段)的数据库中。问题是,当用户未连接到互联网时创建一个not时,它会变得有些复杂,因此我必须分配一个临时noteId,并做一堆其他与笔记系统结构层次结构相关的工作。

因此,我考虑将所有auto_increment选项放在一起,并让本地设备(iPhone / iPad-目标C)创建一个唯一的ID(可能是时间戳),该ID可以在数据库中用作noteId。这样,如果用户脱机并在以后重新连接,则同步与发送唯一ID一样容易。

两个问题:


这如何影响性能?假设我的数据库中有500,000个笔记,而用户对其笔记之一进行了更改。我想使用auto_incrementing字段使系统更容易找到256,000的noteId,但是对于一般的noteId系统,查找88689034的noteId是否会花费更长的时间?
在用户设备本地为笔记生成唯一ID的良好可能性是什么?时间戳?

最佳答案

生成唯一ID的最常见方法之一是使用UUID / GUID。 MySQL具有UUID函数,.NET具有GUID函数,编写使用PHP或JavaScript创建函数很容易...您无需指定客户端应用程序使用的语言。;)但是,可以,它可以影响性能。提高UUID性能的最好方法是将十六进制字符串转换为二进制数,并将其存储在多个INT列中。

编辑:只是想到一个更好的主意...为什么您甚至需要在设备上生成ID?您是否只是创建便笺,然后在设备连接后将便笺发送到服务器,然后让服务器生成ID?也许在设备上您会为设备生成一个临时ID以便对其进行跟踪,但是真实ID仍将由服务器生成。

关于mysql - 从MySQL中的auto_incrementing索引更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9501761/

10-14 13:54