我正在为包含2个大表的数据库编写查询。 获得结果需要永远。我将结果限制在特定的一年,尽管理想情况下我希望立刻得到它们。 sql是:
$sql ="SELECT month(table1.started) as month, count( table1.id ) AS count
FROM table1
INNER JOIN table2 ON table1.`sessionId`=table2.`sessionId`
WHERE table2.item_id=".$id." AND YEAR(table1.started) = '".$year."'
GROUP BY MONTH(started)
ORDER BY MONTH(table1.started) ASC";
php:
$result = $mysqli->query($sql, MYSQLI_USE_RESULT); //unbuffered does not speed it up
if ($result) {
while($info = $result->fetch_assoc()) {$output.="....";}
table1中有大约145k行(其中查询中年份约为25k),table2中有250k。 在获取这些结果时,该网站无法访问。 获得仅有340个项目的结果集需要大约10秒钟,以获得几千个结果中的一个需要超过2分钟。 仅查询table1的结果非常快,即使对于按年和月分组的完整表也是如此。 有没有办法加快速度?