Я думаю, что это может быть лучше.Во-первых, измените запрос на использование NOT EXISTS
:
SELECT *
FROM table1
WHERE table1.field1 = '9' AND -- do not use single quotes if field1 is a number!
table1.field2 <= CURRENT DATE - 1 YEAR AND
NOT EXISTS (SELECT 1
FROM table2
WHERE table2.field1 = '0' AND
table1.field3 = table2.field2 AND
table1.field4 = table2.field3 AND
table1.field5 = table2.field4 AND
table1.field6 = table2.field5 AND
table1.field7 = table2.field6
) ;
Во-вторых, убедитесь, что в сравнениях используются правильные типы '9'
или 9
?'0'
или 0
?
В-третьих, добавить индексы:
table1(field1, field2)
table2(field2, field3, field4, field5, field6, field1)
порядок для первых пяти полей для индекса table2
является произвольным;однако field1
должен последовать за ними.