2013-06-29 127 views
0

這是一個很小的問題。基本連接數據庫,運行查詢,關閉連接?

但我有一個問題,我相信源於這個寫得不好的數據庫查詢。我不知道是否我沒有關閉連接,或者是否需要關閉連接,但服務器正在指示它在大約60秒後超時,並且導致資源佔用率過高。任何人都可以告訴我這個查詢有什麼問題嗎?

這只是一個基本的php查詢,從數據庫中提取。

<?php if(isset($_POST['submit'])) { 

    //print_r($_POST); 

    $example=$_POST['...']; 

    if ($job_number=="") { die("Nothing here."); 

    } 

    $con = mysql_connect("...","...","..."); 

    if (!$con) 

     { 
     die('Could not connect: ' . mysql_error()); 
     } 

    mysql_select_db("...", $con); 

    $query = "SELECT * FROM EXAMPLE WHERE job_number='$example' OR email='$example'"; 

    $result = mysql_query($query); 

    if (mysql_num_rows($result) == "0") { 

    echo 
    'Nothing here.'; 

exit; 
    } 

    echo "<div class='sample'>"; 

    while ($row = mysql_fetch_assoc($result)) { 
     //print_r($row); 
     //customer name 

     echo "<h2>" . $row['name'] ."</h2>"; 

     //status 

     echo "<p>" . $row['status'] ."</p>"; 


     } 
     echo "</div>"; 

    } 
mysql_close($con); 
?> 
+0

這個例子似乎沒問題。你的桌子有多少行? –

+0

如果表格非常大(數百萬行),它是否有'job_number'和'email'索引? – Barmar

+0

如果你不打算進一步查詢,你應該將你的'''''mysql_close($ con);'''移動到剛剛得到結果之後。現在,如果你退出,你就會離開。 – DivinusVox

回答

0

說實話,有很多數據庫你不理解。

數據庫需要時間閱讀。它們被索引的方式定義了你需要如何閱讀它們。

看看這個Measuring actual MySQL query time

...和其他幾個人。 我有一種感覺,你的數據庫是巨大的,並且可能結構不合理。這是我是指你:

http://en.wikipedia.org/wiki/Database

有豐富的信息在這裏清除你的問題了。