我应该限制或减少数据库查询吗?

nat*_*ate 7 php mysql database rate-limiting

我正在创建一个PHP脚本,将一些数据从文本文件导入MySQL数据库.这些文本文件非常大,平均文件中有10,000行,每行对应一个我想要的新项目.(我不会经常导入文件)

我担心从文件中读取一行,然后连续10,000次执行INSERT查询可能会导致一些问题.我有更好的方法吗?我应该使用所有10,000个值执行一个INSERT查询吗?还是会那么糟糕?

也许我可以达到一种媒介,并一次执行10或100个条目.真的我的问题是我不知道什么是好的做法.也许连续10,000次查询都没问题,我只是无所事事.

有什么建议?

gen*_*sis 6

是的

<?php
$lines = file('file.txt');
$count = count($lines);
$i = 0;
$query = "INSERT INTO table VALUES ";
foreach($lines as $line){
    $i++;
    if ($count == $i) {
        $query .= "('".$line."')";
    }
    else{
        $query .= "('".$line."'),";
    }
}
echo $query;
Run Code Online (Sandbox Code Playgroud)

http://sandbox.phpcode.eu/g/5ade4.php

这将生成一个单一查询,这比一行一查询样式快多倍!

  • 但要小心,因为查询的大小必须小于服务器的max_allowed_pa​​cket参数!(见my.ini) (3认同)

Dor*_*Dor 5

使用由High Performance MySQL的作者建议的预准备语句.它节省了大量时间(从浪费的协议和SQL ASCII代码中节省).