0

我想知道将多维值数组插入数据库的最佳方法 - 特别是两个表?我创建了以下 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() 。有些更新会插入数百行,所以我不想这样做。

提前致谢!

4

1 回答 1

0

我假设将它移动到第二个表中会提高第一个表的查询速度?那是对的吗?

不必要。只会影响性能

  • 如果大列被索引(这不太可能,因为 MySQL 限制了索引字段的大小)
  • 如果您的查询经常进行全表扫描
  • 如果值在大部分情况下为空(超过约三分之一)

正如您所说,通过将其拆分为 2 个表,您失去了多插入的好处。因此,正如您所建议的,您唯一的选择是一次插入一条记录并读回插入 id,或者(使用大量代码和复杂性)使用序列生成器并预分配多个记录 id。

于 2012-04-13T08:54:03.533 回答