1

从事与网络抓取相关的 PHP 项目,我的目标是将数据存储到 mysql 数据库中,我在 9 列表中的 3 个索引上使用唯一键索引,记录超过 5k。

  1. 我是否应该在程序级别检查唯一数据,例如将值放入数组中,然后在插入数据库之前进行比较?
  2. 有什么办法可以加快我的数据库插入速度?
4

5 回答 5

1

永远不要创建重复的表,这是一种反 SQL 模式,它使处理数据变得更加困难。

也许 PDO 和准备好的声明会给你一点动力,但不要指望它会带来奇迹。

multible INSERT IGNORE 也可能给你一点动力,但不要指望它会带来奇迹。

您应该像这样生成一个多插入查询

INSERT INTO database.table (columns) VALUES (values),(values),(values) 请记住保持在 mysql 将拥有的最大数据包大小以下。这样索引文件必须更新一次。

于 2013-08-10T21:08:24.543 回答
0

您可以创建当前拥有的表的副本,但任何字段上都没有索引。将数据存储在此表中。

然后使用事件将临时表中的数据移动到主表中。一旦数据被移动到主表,然后从临时表中删除。

于 2013-07-18T05:45:26.767 回答
0

您可以使用触发器跟踪您的更新。您应该更新表,并且您必须为此表正确触发。

于 2013-07-18T05:45:59.580 回答
0

您可以在查询中使用“INSERT IGNORE”。这样,如果违反任何唯一约束,则不会插入记录。

例子:

INSERT IGNORE INTO table_name SET name = 'foo', value = 'bar', id = 12345;
于 2013-07-19T08:46:27.393 回答
0

使用 PDO,mysqli_* 函数,增加对数据库的插入

于 2013-07-18T06:05:42.967 回答