php-mysql大数据库:加入查询极慢

时间:2017-10-22 20:12:03

标签: php mysql

我正在为包含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的结果非常快,即使对于按年和月分组的完整表也是如此。 有没有办法加快速度?

0 个答案:

没有答案