2012-03-13 67 views
-4

我運行了一些簡單的測試:在mysql和php中進行相同的複雜查詢,並測量了處理它們的時間。結果是非常有爭議的,並且表明一些查詢PHP處理比MySql更快。爲什麼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 
?> 

結果:時間(秒)反對的記錄數: enter image description here

+2

該表的模式是什麼?我敢打賭,DateAccess沒有索引。 – Quentin 2012-03-13 13:59:58

+1

這只是一個代碼塊,你在比較什麼? – idstam 2012-03-13 14:03:02

+0

您是否在比較數據庫系統和編程語言,可以通過顯示編程語言從數據庫中輸出記錄所用的時間來使用該系統(但不是必需或僅限於此)? – mishu 2012-03-13 14:04:02

回答

1

我可以看到你使用的是phpmyadmin,它也是腳本化的,以返回值。這可能比你的腳本的速度慢,這絕對是小的速度。你是否考慮從命令提示符運行mysql查詢?這可能會給你一個明顯的區別。

+0

所以,我該怎麼做?從這裏下載http://www.mysql.com/?目前我正在使用EasyPHP解決方案 – fn27 2012-03-13 14:47:42

+0

嘗試http://dev.mysql.com/doc/refman/5.0/en/windows-start-command-line.html – 2012-03-13 14:52:37

+0

如果您在窗口環境中,請找到mysql bin文件夾在你的安裝中。這裏是我如何完成我的:打開cmd,改變目錄指向我的路徑:作爲cd C:\ xampp \ mysql \ bin \然後複製粘貼這個替換用戶名,傳遞和db你的mysql --user = user_name - -password = your_password db_name – 2012-03-13 14:57:06

1

可以有,爲什麼PHP運行比MySQL快很多的原因。如果我將MySQL服務器放在我的2008 300 $ lenovo上網本上,並在我的服務器上運行PHP,我甚至會得到更多的速度差異。

你如何制定你的問題的方式表明,你對性能的瞭解只是在某些軟件的時間上測量的,這就是問題。

+0

謝謝,所以根據我的證據,無法得出任何結論?我認爲更多的記錄將在桌面上處理它們需要的時間越長,因爲php是腳本語言?因此,PHP接口會降低MySQL的性能 – fn27 2012-03-13 14:19:12

+2

我想說你的問題中甚至沒有證據。只運行查詢並測量需要多長時間 - 無輸出等。然後對數組執行相同操作(從文件加載數組並對其進行排序)。你應該開始比較那些時間。在同一臺機器上。重複每次測試100.000次。取平均值。如果時間在+/- 5%的範圍內有所不同,可以忽略,這可能僅僅是因爲計算機在其他地方的工作。 – hakre 2012-03-13 14:33:04

+0

我正在使用同一臺機器。我該如何做到這一點:**然後在數組上執行相同的操作(從文件加載數組並對其進行排序)**是不是希望我在我的PHP代碼 - microtime中執行操作? – fn27 2012-03-13 14:43:41

相關問題