// 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);
看到我的功能.. 我需要替代快速工作的替代品..
在上面指定的范围内,对我来说,运行速度比替代方案快。 查询将返回数组?
所有助手都是这样的!答案 0 :(得分:2)
您可以使用JOIN或SUB SELECT将查询次数从2减少到1吗?可能不会给予很大的提升,但值得一试和更清洁的实施。
瓶颈在哪里?很可能是db而不是php代码。
表/列是否正确编入索引?对两个查询运行EXPLAIN。
答案 1 :(得分: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);
除非有更多理由让第一个单独分开,但在代码示例中不可见。
答案 2 :(得分:0)
如果你使用PDO(无论如何推荐......),你可以使用fetchAll()
一次性返回结果数组。
对于第二个查询,您可以使用string concatenation in MySQL直接返回所需的结果。