У меня есть следующий запрос, когда я объясняю запрос, он говорит: «Диапазон проверен для каждой записи (индексная карта: 0x8)». Я предполагаю, что это одна из причин, запрос, как медленно, как можно улучшить этот Как удалить проверку диапазона в запросе
Запрос выглядит, как следовать в настоящее время,
explain select
*
from
(select
CASE WHEN dd.parentId IS NOT NULL
THEN CONCAT(dd.`profileId`,dd.`orgId`,dd.parentId)
ELSE CONCAT(dd.`profileId`,dd.`orgId`,dd.id) END as ticketId,dd.*
from
t_dtls_prod dd where dd.currentlyActive = true and dd.dataSource ='SAND' AND msgCreatedOn BETWEEN '2016-09-01 00:00:00'
AND '2016-10-03 00:00:00' and dd.profileId = 148 group by ticketId) as d
left join basket_prod b on b.basketId=d.toBasketId
left join lead_social_accts_prod a on a.orgId=1002
AND (
(
(
(a.`type`='TWITTER' and d.channel in (1,34)) or (a.`type`='FACEBOOK' and d.channel in (6,7))
or (a.`type`='GOOGLEPLUS' and d.channel in (5,25)) or (a.`type`='LINKEDIN' and d.channel =30)
or (a.`type`='GOOGLEPLUS' and d.channel=36) or ((a.`type`='YOUTUBE' or a.`type`='GOOGLEPLUS') and d.channel=27)
or (a.`type`='TUMBLR' and d.channel in (29,31)) or
(a.`type`='INSTAGRAM' and d.channel=35)
)
AND
d.userChannelId=a.socialId) OR
(a.`type`='BLOG' and d.channel in (9,11,15,21) AND d.msgId=a.socialId))
left join lead_prod l on l.leadId=a.leadId and l.orgId=1002 where d.profileId = 148 limit 0,1000
Результатов опоздавших в то время спуска ДО 1000 строк , но помимо этого он просто умирает.
на a.orgId = 1002. И ((((a.'type' = 'TWITTER' и d.channel в (1,34)) или (a.'type' = 'FACEBOOK' и d.channel в (6,7)) или (a.'type' = 'GOOGLEPLUS' и d.channel in (5 , 25)) или (a.'type' = 'LINKEDIN' и d.channel = 30) или (a.'type' = 'GOOGLEPLUS' и d.channel = 36) или ((a.'type' = ' YOUTUBE 'или a.'type' =' GOOGLEPLUS ') и d.channel = 27) AND d.userChannelId = a.socialId) ИЛИ (a.type) '= 'BLOG' и d.channel in (9,11,15,21) И d.msgId = a.socialId)) .. это соединение –
ok, тогда .. бит ускоряется, порядок условий важен –
i вещь там не имеет большого отношения к этому, если у вас есть условие соединения с 'OR' –