下面这段sql
SELECT
TT1.COUNT - TT2.COUNT COUNT
FROM
(
SELECT
IFNULL(sum(T.USER_4G_LAST), 0) COUNT
FROM
(
SELECT DISTINCT
T1.SITE_CODE,
T1.USER_4G_LAST
FROM
BIC_PERF_USER_INFO T1
WHERE
T1.MONTH_STAMP = '201707'
) T
) TT1,
(
SELECT
IFNULL(sum(T.USER_4G_LAST), 0) COUNT
FROM
(
SELECT DISTINCT
T1.SITE_CODE,
T1.USER_4G_LAST
FROM
BIC_PERF_USER_INFO T1
WHERE
T1.MONTH_STAMP = '201706'
) T
) TT2
数据库中数据有150W
所用查询时间需要8秒多,请问有什么方法能够优化这个查询~~~
select IFNULL(sum(T1.USER_4G_LAST), 0) COUNT1 - IFNULL(sum(T2.USER_4G_LAST), 0) COUNT2 as COUNT
from BIC_PERF_USER_INFO T1 , BIC_PERF_USER_INFO T2
where T1.MONTH_STAMP = '201707' and T2.MONTH_STAMP = '201706'
有数据库大神给些建议吗
SELECT
TT1.COUNT - TT2.COUNT COUNT
FROM
(
SELECT DISTINCT
IFNULL(sum(T.USER_4G_LAST), 0) COUNT
FROM BIC_PERF_USER_INFO T
WHERE T.MONTH_STAMP = '201707'
) TT1,
(
SELECT DISTINCT
IFNULL(sum(T.USER_4G_LAST), 0) COUNT
FROM BIC_PERF_USER_INFO T
WHERE T.MONTH_STAMP = '201706'
) TT2
SELECT
IFNULL(sum(TT1.USER_4G_LAST), 0)-IFNULL(sum(TT2T.USER_4G_LAST), 0) count
FROM
(
SELECT
T1.SITE_CODE,
T1.USER_4G_LAST
FROM
BIC_PERF_USER_INFO T1
WHERE
T1.MONTH_STAMP = '201707' group by T1.SITE_CODE,
T1.USER_4G_LAST
) TT1,
(
SELECT
T1.SITE_CODE,
T1.USER_4G_LAST
FROM
BIC_PERF_USER_INFO T1
WHERE
T1.MONTH_STAMP = '201706' group by T1.SITE_CODE,
T1.USER_4G_LAST
) TT2
SELECT
T2.MONTH_STAMP,
T2.4g_sum
from(
SELECT
T1.MONTH_STAMP,
IFNULL(sum(T1.USER_4G_LAST), 0) AS 4g_sum
FROM
BIC_PERF_USER_INFO T1
group by T1.MONTH_STAMP,
T1.SITE_CODE,
T1.USER_4G_LAST
) T2
where T2.MONTH_STAMP='201706' or T2.MONTH_STAMP='201707'
为什么要在sql上直接运算,查出两个数再加减操作不行?