6

i am working on PHP on OOP's concept, this is the class called 'connect' which connects to database and also inserts the request in database_

class connect(){
        public function insert($column, $value)
            {
            $insert = mysqli_query($this->con, "INSERT INTO $tablename ($column)
    VALUES ('$value')");
            }/* end of insert method */
}/* end of class 'connect' */

all i just want to know that if i insert each time by calling 'insert' method for each request, will it be a waste of time or wasting more server time?, or should i just make only one method for inserting all the request at a time?;

$call = new connect("localhost", "root", "", "facebook","fb1");
$call->insert("username", "testInsert141");
$call->insert("username", "testInsert141");
$call->insert("username2", "testInsert142");
$call->insert("username3", "testInsert143");
4

2 回答 2

6

我假设您指的是与将所有命令转储到一个大文件中相比,调用函数可能是“昂贵的”这一事实。

基本上,是的 - 这将需要更多时间(理论上)。你应该担心这个时间吗?不。

您应该担心的是代码中实际上会影响时间消耗的部分。在您的示例中,mysql 启动可能会占用您 90% 的处理时间,如果不是更多的话。因此,您应该确保只连接到 mysql 一次。

此外,当发送一个查询来执行所有插入时, mysql 端的插入查询可能会更快。然而,这也可能是微不足道的。确定这一点的最佳方法是测试和分析您的代码。

底线 - 你应该首先担心让你的代码可读和可维护。然后进行分析以检测真正的瓶颈。

于 2013-06-07T12:44:27.503 回答
3

针对一个查询,您的方式会变慢。

看到这个测试http://blog.cnizz.com/2010/05/31/optimize-mysql-queries-fast-mutliple-row-inserts/

更新:

mysqli 测试:

<?php
$s = microtime(true);
$mysqli = new mysqli("127.0.0.1", "root", "pass", "test", 3306);
for($i=0;$i<1000;$i++){
    $mysqli->query("INSERT INTO admin SET name='hello world'");
}
$e = microtime(true);
echo $e-$s;
?>

28.007468938828-INNODB

0.19577789306641 - MYISAM

<?php
$s = microtime(true);
$mysqli = new mysqli("127.0.0.1", "root", "pass", "test", 3306);
$sql = "INSERT INTO admin (`name`) VALUES ";
for($i=0;$i<1000;$i++){
    $sql.= "('hello world'),";
}
$sql = substr($sql,0,-1);
$mysqli->query($sql);

$e = microtime(true);

echo $e-$s;
?>

0.06469202041626 - INNODB

0.052706003189087 - MYISAM

(在 Athlon X2 2.7MHz 上测试)

和在 Intel I3 2.4MHz 上的分数差不多

于 2013-06-07T12:43:40.203 回答