好的,哪个更快更好用?
AUTO_INCREMENT
或
调用一个执行最大值的SQL,然后添加一个
所以最终问题是你应该使用mysql来做它还是自己做?
答案 0 :(得分:4)
绝对自动增量。您要编写的SQL不是线程安全的,只适用于通过特定存储过程/ sql输入的数据。
答案 1 :(得分:3)
auto_increment将比最大聚合更快,最大聚合必须在最少的时候查找索引,或者在最坏的情况下进行全表扫描。另外,max()可能不是线程安全的,除非你非常小心。
答案 2 :(得分:2)
使用MAX的问题是isolation level - 充其量,由于读取可能不正确的记录,该值有可能过度膨胀。在最坏的情况下,获取当前最大值的查询是在前一次插入发生之前读取表 - 导致冲突。
另一个考虑因素是必须推送自己的id生成器和内容来检索id,因为你无法使用LAST_INSERT_ID()
。