【问题标题】:Why does the PHP run faster than MySQL [closed]为什么 PHP 运行速度比 MySQL 快[关闭]
【发布时间】:2012-03-29 22:29:32
【问题描述】:

我进行了一些简单的测试:在 mysql 和 php 中进行了相同的复杂查询,并测量了处理它们所花费的时间。结果非常有争议,并且表明某些查询 PHP 的处理速度比 MySql 快。

理论上,不应该是MySql更快吗? 我想比较 PHP(脚本语言)接口如何降低复杂 SQL 查询的性能。但为什么我的结果表明并非如此?

这些是平均值,我每个查询运行 3 次!

php代码:

<?php
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("test3", $con);

    $start = microtime(TRUE);
    $result = mysql_query("SELECT * FROM `test`
    ORDER BY `test`.`test1` DESC
    LIMIT 0,100");


echo "<table border='1'>
<tr>
<th>ID</th>
<th>test1</th>
<th>test2</th>
<th>test3</th>
<th>test4</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['ID'] . "</td>";
  echo "<td>" . $row['Test1'] . "</td>";
  echo "<td>" . $row['Test2'] . "</td>";
  echo "<td>" . $row['Test3'] . "</td>";
  echo "<td>" . $row['Test4'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

$end = microtime(TRUE);

$sqlTime = $end - $start;


mysql_close($con);
echo $sqlTime
?> 

结果:以秒为单位的记录数:

【问题讨论】:

  • 表的架构是什么?我打赌 DateAccess 上没有索引。
  • 这只是一段代码,你拿什么来比较?
  • 您是否通过显示编程语言从数据库输出记录所花费的时间来比较数据库系统与可以(但不是必需或限制)使用该系统的编程语言?
  • 我什至不明白这个问题。您如何比较 PHP 和 MySQL?我在这里看到的是发出 MySQL 查询的 PHP 代码。
  • 我猜你是想说php sort() 函数比mysql 中的ORDER BY 快。虽然你的代码没有显示。此外,您还通过回声等测量输出的时间。

标签: php mysql testing


【解决方案1】:

PHP 运行速度比 MySQL 快的原因有很多。如果我将 MySQL 服务器放在我 2008 年 300 美元的联想上网本上并在我的服务器上运行 PHP,我什至会获得更大的速度差异。

您提出问题的方式表明,您对与某些软件相关的及时测量性能的理解是这里的问题。

【讨论】:

  • 谢谢,所以根据我的证据,不能得出结论吗?我认为表格上的记录越多,处理它们所需的时间就越长,因为 php 是脚本语言?因此,PHP 接口会降低 MySQL 的性能
  • 我想说你的问题甚至没有证据。只需运行查询并测量需要多长时间 - 没有输出等。然后对数组执行相同操作(从文件加载数组并对其进行排序)。你应该开始比较那些时间。在同一台机器上。重复每个测试 100.000 次。取平均值。如果时间差异在 +/- 5% 范围内,请忽略,这可能只是因为计算机在其他地方使用了什么。
  • 我在同一台机器上工作。我该怎么做:然后在数组上做同样的事情(从文件中加载数组并对其进行排序)我不想在我的 php 代码中做 - microtime?
  • 你的php代码包含microtime,但是你在哪里只测量mysql查询,你在哪里测量PHP数组加载+排序?据我所知,这甚至不是你问题的一部分。
【解决方案2】:

我可以看到你正在使用 phpmyadmin,它也被脚本化以返回值。这可能比你的脚本速度慢,这绝对是小脚本。您是否考虑过从命令提示符运行 mysql 查询?这可能会给您带来明显的不同。

【讨论】:

  • 确实如此,我该怎么做呢?从这里下载mysql.com?我目前正在使用 EasyPHP 解决方案
  • 如果你是window环境,找到你安装的mysql bin文件夹。这是我的做法:打开 cmd,更改目录以指向我的路径:作为 cd C:\xampp\mysql\bin\ 然后复制粘贴这个替换用户名,通过你的 mysql --user=user_name - -password=your_password db_name
  • also dev.mysql.com/doc/refman/5.5/en/mysql.html: 从那时起,您应该能够正常进行查询。你必须熟悉mysql语法
猜你喜欢
  • 2011-08-27
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2017-02-03
  • 1970-01-01
相关资源
最近更新 更多