MySQL. Оптимизация тяжелого запроса

217
06 мая 2018, 20:50

Есть такой запрос:

select max(case when consumer.dateTo=CUST.GetDateTimeMax() then consumer.dateFrom else consumer.dateTo end) max_date
    from CUST.EntityRuleLink consumer
    join CUST.EntityPropertyValue p on p.entityId=consumer.parentEntityId
    join CUST.EntityPropertyValue c on c.entityId=consumer.childEntityId
    where p.entityPropertyKindId=14482
    and p.value=30508420
    and c.entityPropertyKindId=14478
    and c.value=41109007
    and consumer.hierarchyRelationId=1026;

Его план такой:

 "id"   "select_type"   "table" "type"  "possible_keys" "key"   "key_len"   "ref"   "rows"  "Extra"
"1" "SIMPLE"    "p" "ref"   "entityId,entityPropertyKindId,entityIdShortIndex"  "entityPropertyKindId"  "8" "const" "22824489"  "Parent of 3 pushed join@1; Using where"
"1" "SIMPLE"    "consumer"  "ref"   "childEntityId,parentEntityId"  "parentEntityId"    "9" "CUST.p.entityId"   "15"    "Child of 'p' in pushed join@1; Using where with pushed condition"
"1" "SIMPLE"    "c" "ref"   "entityId,entityPropertyKindId,entityIdShortIndex"  "entityIdShortIndex"    "8" "CUST.consumer.childEntityId"   "20"    "Child of 'consumer' in pushed join@1; Using where"

Данный запрос отрабатывает более 20 минут. Есть ли какие-то способы его ускорить? Подскажите, куда копать?

READ ALSO
правильный MySql запрос

правильный MySql запрос

Есть таблица ТоваровТаблица разделена на id,name

188
Железнодорожный вокзал

Железнодорожный вокзал

База данных "продажа билетов жд вокзала"Знатоки, подскажите, правильно составлена БД реляционная? Связи в схеме привязываются по ключам "№ поезда...

195
Ошибка подключения к бд 10061 MySQL

Ошибка подключения к бд 10061 MySQL

Установил MySQL, зашел в воркбенч, создал бдПосле перезагрузки ПК появилась ошибка

155