2011-01-25 86 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); 

除非有更多的理由,第一个独立的,但是这是在您的代码示例中不可见。