MYSQL优化SQL语句
1.NOT IN用时2.413s
SELECT
houses.id AS house_id,
building_id
FROM
houses
WHERE houses.id
NOT in (
SELECT
payment.house_id
FROM
payment
WHERE
payment.payment_state = 1
AND houses.id = payment.house_id
GROUP BY
payment.house_id
)
GROUP BY
houses.id
2.NOT EXISTS 代替 not in 用时2.404s
SELECT
houses.id AS house_id,
building_id
FROM
houses
WHERE
NOT EXISTS (
SELECT
payment.house_id
FROM
payment
WHERE
payment.payment_state = 1
AND houses.id = payment.house_id
GROUP BY
payment.house_id
)
GROUP BY
houses.id
3.Mysql使用外连接替换NOT EXISTS的写法, 用时0.150s
SELECT
houses.id AS house_id,
building_id
FROM
houses
LEFT JOIN (
SELECT
payment.house_id
FROM
payment
WHERE
payment.payment_state = 1
GROUP BY
payment.house_id
) AS b ON houses.id = b.house_id
WHERE
b.house_id IS NULL;
GROUP BY
houses.id