插入大量只有数字的行

Mic*_*hel 6 php mysql optimization performance

仅使用数字在表中创建899行的最快方法是什么.该列不是自动增量.

目前我创建了这样的查询:

$a1=range(100,999);
$a1=implode('),(',$a1);
$a1='INSERT INTO groups (val) VALUES('.$a1.')';
Run Code Online (Sandbox Code Playgroud)

它提供了一个像这样的巨大查询:

INSERT INTO groups (val) VALUES(100),(101),(102),(103),(104),(105),(106),(107),(108),
(109),(110),(111),(112),(113),(114),(115),(116),(117),(118),(119),(120),(121),(122),
(123),(124),(125), etc etc etc....
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更快更好的方法来做到这一点?

Ita*_*Gal 1

我认为你没有更快的方法来做到这一点。查看MySQL文档

\n\n
\n

插入一行所需的时间由以下因素决定,其中数字表示大致比例:

\n\n

连接:(3)

\n\n

向服务器发送查询:(2)

\n\n

解析查询:(2)

\n\n

插入行:(1 \xc3\x97 行大小)

\n\n

插入索引:(1 \xc3\x97 索引数)

\n\n

结束:(1)

\n\n

这没有考虑打开表的初始开销,该开销为每个并发运行的查询执行一次。

\n\n

假设 B 树索引,表的大小会使索引的插入速度减慢 log N。\n

\n\n

您可以使用以下方法来加快插入速度:

\n\n

如果要同时从同一客户端插入多行,请使用具有多个 VALUES 列表的 INSERT 语句来一次插入多行。这比使用单独的单行 INSERT 语句要快得多(在某些情况下快很多倍)。如果要将数据添加到非空表,则可以调整bulk_insert_buffer_size 变量以使数据插入速度更快。请参阅第 5.1.4 节,\xe2\x80\x9c服务器系统变量\xe2\x80\x9d。

\n
\n\n

通过一个查询,您可以保存ConnectingSending query to serverClosing、 以及 MySQL 优化您的查询。

\n\n

另外,如果您仅插入大约 1000 行且数据很少,则插入速度非常快,因此我不会担心这种情况下的性能。

\n