У меня возникли некоторые основные вопросы, с помощью оператора SQL, следующее выражение вызывает такое большое напряжение к двигателю MySQL это в значительной степени зависания:Очень медленный SQL заявление
select c.title, c.initial, c.surname, c.labelno, c.email, br1.bookingdate
from explorer.booking_record br1
inner join explorer.client c
on c.labelno = br1.labelno
and email not like ''
where br1.bookingdate >= '2009-01-01'
and br1.bookingdate < '2009-01-31'
and c.labelno Not In (Select labelno from explorer.booking_record br2 where br2.labelno = br1.labelno and br2.bookingdate >= '2010-01-01' and br2.bookingdate < '2010-01-31')
Я пробовал несколько вариантов на то же самое, без объединений и двух подзапросов, добавив «порядок», как указано в документации. На самом деле не так много записей в базе данных, book_record имеет ~ 500 000 записей, а клиент имеет ~ 450 000. Если я запустил запрос, обычно он получает около 20 результатов через 70-80 секунд, но это приводит к тому, что служба переходит в состояние, подобное циклу.
Любой совет будет очень благодарен.
Daniel.
Вы указали указатели на labelno & bookingdate (или сложный на обоих)? –
На самом деле у меня нет никакого контроля над самой базой данных, поэтому я не мог сказать вам - я буду изучать его, поскольку индексы, похоже, являются общей темой здесь –
Хорошо, что у меня был взгляд, а labelno - индекс в клиенте, но указатель в booking_record находится на bookingref (фактически не используется в этом запросе) –