У меня есть две массивные таблицы, и каждая из них запрашивает около 1 минуты, что приемлемо. То, что я пытаюсь сделать, это ..
table1
job | profile_value | type
-------------------------------------------
job1 | p1 | order
job2 | p1 | order
job3 | p3 | order
table2
job_no | profile_no | status
-------------------------------------------
job1 | p1 | completed
job2 | p2 | completed
job3 | p3 | finished
job4 | p3 | started
Принципиально job2 здесь другой. Этот запрос определенно плох, поскольку он выполняет сравнение методом грубой силы.
SELECT A.jobuuid
FROM (
select job as job_id, profile_value as profile_id
from table1
CROSS JOIN ....
where type = 'order' and datestr >= '{{min_date}}'
) AS A
JOIN (
SELECT job_no as job_id, profile_no as profile_no as profile_id
FROM table2
CROSS JOIN ....
WHERE datestr >= '{{min_date}}' AND status IN ('completed', 'finished')
) AS B
ON A.profile_id != B.profile_id AND A.job_id=B.job_id
Запрос должен получить число несинхронных запросов c ...
Вывод:
job_id | profile_id
--------------------------
job2 | p2 (Since the job_ids are same and profile_id is diff)