优化嵌套语句

时间:2017-10-04 23:34:20

标签: mysql query-optimization

我试图找到将一长串点击分解成与各种着陆器相关的相关表格的最佳方法。

SELECT LANDER, COUNT(DISTINCT IP) AS CLICKS
FROM
(
    SELECT LANDER, USER_GROUP, IP
    FROM
    (
            SELECT LANDER USER_GROUP, IP, TIME FROM CLICKS_IN WHERE USER_GROUP = " . $_SESSION["KKGR"] . "
    )a
    WHERE TIME BETWEEN '" . date_format($sdate, 'Y/m/d') . "' AND '" . date_format($edate, 'Y/m/d') . "'
 )a
GROUP BY LANDER HAVING COUNT(*)>5 ORDER BY CLICKS DESC";

到目前为止,我是否已经提出了有效获取唯一点击列表的信息。我的两个问题是,如果可能的话,我宁愿写一个准备好的查询,但我不知道如何使用嵌套的SQL语句来做,其次我不确定是否有更好的方法可以做这个\这可能导致长期运行的问题。它的运行速度明显高于简单的SQL语句,但是我担心如果这种情况可以扩展,我可能会将大部分表缓冲到RAM中。

1 个答案:

答案 0 :(得分:0)

我不认为任何嵌套是必要的,它可能会干扰MySQL在TIME列上使用索引的能力。

SELECT LANDER, COUNT(DISTINCT IP) AS CLICKS
FROM CLICKS_IN
WHERE USER_GROUP = " $_SESSION['KKGR'] . "
AND TIME BETWEEN '" . date_format($sdate, 'Y/m/d') . "' AND '" . date_format($edate, 'Y/m/d') . "'
GROUP BY LANDER
HAVING CLICKS > 5
ORDER BY CLICKS DESC