我想知道将多维数组值插入数据库的最佳方法 - 特别是两个表?我创建了以下foreach循环,它创建了一个查询,将所有记录插入到一个表中:
foreach($newPosts as $value) {
if(!isset($postQuery)) {
$postQuery = "INSERT INTO posts (primay_key, col1, col2, col3, col4) VALUES ('$value[0]', FROM_UNIXTIME($value[4]), '$value[2]', '$value[1]', '$value[3]')";
} else {
$postQuery .= "('$value[0]', FROM_UNIXTIME($value[4]), '$value[2]', '$value[1]', '$value[3]')";
}
}
我想将其中一个值存储在一个单独的表中,因为该值特别大,并且该行的格式为Longtext。查询数据库时也很少调用此值。我假设将它移动到第二个表将增加第一个表的查询速度?这是对的吗?
如果我将此值移动到第二个表中,我想将表与第一个表中的primary_key链接,这是一个自动增量值。如何将这个多维数组循环并将我的数据插入到两个表中,同时将第一个表的primary_key插入到第二个表中?我知道如果我一次运行一个查询,我可以使用LAST_INSERT_ID()。有些更新会插入数百行,所以我不想这样做。
提前致谢!
答案 0 :(得分:0)
我假设将其移动到第二个表会增加第一个表的查询速度吗?这是对的吗?
不一定。它只会影响性能
正如您所说,通过将多插入分成2个表,您将失去多插入的好处。因此,正如您所建议的那样,您唯一的选择是一次插入一条记录并读回插入ID或(使用大量代码的复杂性)使用序列生成器并预先分配多个记录ID。