Prøv at opdele den eksisterende SQL i to dele og se, hvad der er udførelsestiderne for hver. Dette vil forhåbentlig give dig, hvilken del der er ansvarlig for langsommeligheden:
del 1:
SELECT table_1.id
FROM table_1
LEFT JOIN table_2
ON (table_1.id = table_2.id)
WHERE table_1.col_condition_1 = 0
AND table_1.col_condition_2 NOT IN (3, 4)
AND table_2.id is NULL
og del 2 (bemærk den indre sammenføjning her):
SELECT table_1.id
FROM table_1
JOIN table_2
ON (table_1.id = table_2.id)
WHERE table_1.col_condition_1 = 0
AND table_1.col_condition_2 NOT IN (3, 4)
AND table_1.date_col > table_2.date_col
Jeg forventer, at del 2 ville tage længere tid. I dette tror jeg, at et indeks på både table_1 og table_2 på date_coll ville hjælpe.
Jeg tror ikke, det sammensatte indeks ville hjælpe overhovedet i dit valg.
Dette sagde, at det er svært at diagnosticere, hvorfor de tre tilstande tilsammen ville påvirke ydeevnen så dårligt. Det ser ud til at være relateret til din datadistribution. Ikke sikker på mySql, men i Oracle ville en statistiksamling på disse tabeller gøre en forskel.
Håber det hjælper.