【发布时间】:2010-12-02 01:15:41
【问题描述】:
我必须将数据插入两个表,Items 和 Class_Items。 (第三个表,Classes 在这里是相关的,但没有被插入)。
Items的主键是Item_ID,是一个自增的整数。除了这个主键之外,Items 中没有唯一的字段。我需要知道 Item_ID 是什么以将其与 Class_Items 中的类匹配。
这一切都是通过 PHP 接口完成的。我想知道插入项目的最佳方法是什么,然后将它们的 Item_ID 匹配到 Class_Items 中。以下是我看到的两个主要选项:
- 插入每个项目,然后使用 mysql_insert_id() 为 Class_Items INSERT 查询获取其 Item_ID。这意味着对每个项目进行一次查询(总共有数千个查询)。
- 获取下一个自动增量 ID,然后锁定 Class_Items 表,以便我可以继续添加到 $item_id 变量。这意味着只有两个查询(一个用于 Items,一个用于 Class_Items)
哪种方式最好,为什么?此外,如果您有未列出的替代方案,我愿意接受最有效的方法。
【问题讨论】:
-
除非您经常添加数千个项目,否则您在第一个替代方案中提到的“查询成本”不会成为常见问题;它只会在初始项目导入期间真正咬你。不过,这显然取决于您的具体问题。
-
很公平。即使现在赌注不那么高,我仍然想知道哪个更好。未来我会做几十万
-
mysql_insert_id() 不是一个查询——它只是暴露了前一个查询中现有的一个值。微不足道的开销。
-
@le dorfier 它是 SELECT LAST_INSERT_ID() 查询的包装器
标签: php sql mysql auto-increment