1
目标:需要查询计算所有“不同”导致没有当前公司目前存在的公司以外。查询需要考虑到数以百万计的多个表之间的记录(lead_details,域公司)优化有上百万的记录
EXAMPLE:
company 1 -> domain 1 -> lead 1 lead_details records exists.
company 2 -> domain 2 -> lead 1 lead_details records exists.
company 2 -> domain 2 -> lead 2 lead_details records exists.
company 3 -> domain 3 -> lead 2 lead_details records exists.
company 3 -> domain 3 -> lead 3 lead_details records exists.
结果:如果我在上面关于公司1数据的查询,其结果应该是一个数(2 )因为铅2 &导致3是独一无二的,在公司1
domain_id domain_name company_id company_name lead_id lead_count
"2" "D2" "2" "C2" "2" "2"
"3" "D3" "3" "C3" "3" "1"
这里是我的查询不存在,请让我知道如果任何人有任何更好的建议。
SELECT al.*
FROM (
SELECT
d.id AS domain_id,
d.name AS domain_name,
c.id AS company_id,
c.name AS company_name,
ld.lead_id,
count(ld.lead_id) as lead_count
FROM domains d
INNER JOIN company c
ON (c.id = d.company_id AND c.id != 1)
INNER JOIN lead_details ld
ON (ld.domain_id = d.id)
GROUP BY ld.lead_id
) al
LEFT JOIN (
SELECT ld.lead_id FROM domains d
INNER JOIN company c
ON (c.id = d.company_id AND c.id = 1)
INNER JOIN lead_details ld
ON (ld.domain_id = d.id)
) ccl
ON al.lead_id = ccl.lead_id
WHERE ccl.lead_id IS NULL;
我几乎百万行,因此需要找出更好的解决方案..
请新增SHOW的'输出CREATE TABLE domains'你的问题,与同为'company'和'lead_details'表。这将允许我们查看现有索引以及验证数据类型。 –