我在php文件中有以下查询:
$query = "SELECT
a.aurl as al,
(a.lttotals
-
( SELECT b.lttotals
FROM stats b
WHERE ltdate='$newdate'
AND b.aurl=a.aurl
)
) as tt,
lttotals
FROM stats a
WHERE ltdate='$date'
ORDER BY lttotals DESC
LIMIT 20";
这非常慢,如果我将限制更改为20以上,mysql就会消失。 ;)
基本上我需要做的是从一行中的某些列获取值并从另一行中减去它们。
有没有更好的方法来使用我现在所做的事情来做我想做的事情,还是应该重新构建我存储数据的方式?
答案 0 :(得分:1)
SELECT a.aurl AS a1,
a.lttotals
a.lttotals - b.lttotals
FROM stats a
JOIN stats b
ON b.aurl = a.aurl
AND b.ltdate = '$newdate'
WHERE a.ltdate = '$date'
ORDER BY
a.lttotals DESC
LIMIT 20
创建以下索引:
stats (ltdate, lttotals)
stats (ltdate, aurl)
让它快速工作。
答案 1 :(得分:0)
SELECT a.url AS al,
(a.lttotals - b.lttotals) AS tt,
a.lttotals
FROM stats a, stats b
WHERE a.ltdate='$date' AND b.ltdate='$newdate' AND a.url = b.url
ORDER BY a.lttotals DESC