我有一个关于mysql_query(我知道它已经被弃用,很快就会过时)和mysql I之间的区别的问题,以及我注意到的相对性能差异。
所以尽可能简单地说——我在PHP5.4中从头开始开发了一个API,我使用的是MySQLV5.0.96,运行在LAMP服务器(centos、apache、MySQL、PHP)上,四核3.0GHz、16GB ram、100mbps双工con。。。一个标准的服务器。
要从POSTMAN(如果你不知道的话,这是一个很棒的应用——值得一看的google chrome扩展)对API进行初始调用,平均需要160ms,考虑到我在世界的另一边,必须进行一些身份验证检查,我对其他代码并不太在意,但真正让我吃惊的是下面两组代码在性能上的差异:
调用+返回一个55的数组将使用mysqli生成索引表,如下所示:

    $mysqli = new \mysqli("127.0.0.1", "username", "password", "database", 3306);
    if ($mysqli->connect_errno) {
        echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }
    $result = $mysqli->query("SELECT id, name FROM products ORDER BY id");
    $rows = array();
    while($row = $result->fetch_row()) {
        $rows[] = $row;
    }
    return $rows;

上面的mysqli平均需要850ms,有些峰值在1000ms,有些低点在650ms
相比之下,我之所以这么做是因为我觉得返回一个55条记录的数组似乎非常高,我决定使用老式的mysql_查询(是的,我知道这是过时的等等)和下面的代码,正如你会注意到的,我已经很小心地复制了这两个,就像我可以使用不同的方法一样。
    $con = mysql_connect("127.0.0.1","username","password");
    if (!$con){ die('Could not connect: ' . mysql_error()); }
    mysql_select_db('database', $con);
    $row = array();
    $result = mysql_query("SELECT id, name FROM products ORDER BY id");
    while($rows = mysql_fetch_assoc($result)) {
        $row[] = $rows;
    }
    return $row;

mysql_查询的平均时间为220ms,有些高的为300ms,有些低的为180ms
有谁能指出为什么原来的mysql_查询比新的mysqli快四倍?我不明白为什么会这样。。。我很想知道我是做错了mysqli还是只是一个奇怪的观察?当然,更新通常意味着更好,因此更好意味着更快/更准确,所需的计算能力更少?

最佳答案

mysql_query,传统的查询方式由于其简单性有其自身的优势。
作为mysqli有自己的地方。
这取决于mysql数据库的设计方式,相应的速度也取决于它。
如果你需要一次或多次连接到你的数据库,它最好使用MySQL,因为它不会使你的数据库从一个主机到多个连接,而MySql查询传统的方式,会产生多个连接,这可以达到数据库主机的最大连接限制数。但是是的,联系越多,工作越快。

10-06 05:30
查看更多