我的表有两列:"id"(自动增量,主要)和"数字"(唯一).现在我想要以下内容:
做这项工作最有效的方法是什么?
注意:
谢谢!
INSERT IGNORE INTO table (number) VALUES (42);
SELECT id FROM table WHERE number = 42;
Run Code Online (Sandbox Code Playgroud)
这可能是MySQL中最有效的.您可以使用存储过程将它们混淆,这可能会或可能不会更高效.
编辑:
如果您认为新数字出现的情况很少见,那么速度会更快:
SELECT id FROM table WHERE number = 42;
if (!id) {
INSERT INTO table WHERE number = 42;
id = SELECT @LAST_INSERT_ID;
}
Run Code Online (Sandbox Code Playgroud)
如果并发线程同时选择然后同时插入相同的数字,则存在可能的竞争条件.在这种情况下,后面的插入将失败.您可以通过重新选择此错误条件来从此恢复.
| 归档时间: |
|
| 查看次数: |
4541 次 |
| 最近记录: |