2011-01-25 96 views
-1
// make empty array 
    $sqlArray=array(); 
    $jsonArray=array(); 


    // START NEED FAST WORKING ALTERNATİVES ----------------------------------------------------- 
    // first 20 vistors 
    $query = "SELECT user_id FROM vistors LIMIT 20"; 
    $result = mysql_query ($query) or die ($query); 

    // make vistors user query array 
    while ($vstr_line = mysql_fetch_array($result)){ 
    array_push($sqlArray, $vstr_line['user_id']); 
    } 

    // implode vistors user array 
    $sqlArray_impl = implode("', '", $sqlArray); 
// END NEED FAST WORKING ALTERNATİVES ----------------------------------------------------- 


    // Get vistors information 
    $query = "SELECT id, username, picture FROM users WHERE id IN ('$sqlArray_impl')"; 
    $qry_result = mysql_query($query) or die($query); 


    while ($usr_line = mysql_fetch_array($qry_result)){ 
    array_push($jsonArray, $usr_line['id'].' - '.$usr_line['username'].' - '.$usr_line['picture']); 
    } 


    print_r($sqlArray); 

    echo '<br><br>'; 

    print_r($jsonArray); 

看到我的功能.. 我需要快速工作的替代品的替代品..範圍內如何爲mysql_query返回數組?

功能上面指定的,對我來說,運行比其他快。 查詢將返回數組?

thx所有幫手!

+1

這種行爲完全沒問題(國際海事組織,我希望我不是無知的)。除非你的查詢時間不好,否則它不應該慢。你有分析過嗎?你能否給我們一些數字來證明你爲什麼需要它更快? – Tesserex 2011-01-25 14:22:00

+0

爲什麼不嵌套查詢?選擇ID,用戶名...來自ysers其中的id(從訪客中選擇user_id限制20) – cromestant 2011-01-25 14:31:20

回答

2
  1. 您可以使用JOIN或SUB SELECT將查詢計數從2減少到1嗎?可能不會有太大的提升,但值得一試和更清晰的實施。

  2. 瓶頸在哪裏?最有可能的數據庫,而不是PHP代碼。

  3. 表/列是否正確編入索引?在兩個查詢上運行EXPLAIN。

1

最簡單的將是包括作爲子查詢消除了一圈到數據庫和大量的代碼先查詢:

// Get vistors information 
    $query = "SELECT id, username, picture FROM users WHERE id IN (SELECT user_id FROM vistors LIMIT 20)"; 
    $qry_result = mysql_query($query) or die($query); 

除非有更多的理由,第一個獨立的,但是這是在您的代碼示例中不可見。