У меня возникает странная проблема, когда этот конкретный запрос MySQL будет работать почти в 50 раз медленнее после того, как мы обновили нашу базу данных с MySQL 5.1.73 до 5.6.23.Тот же запрос MySQL работает намного медленнее в 5.6, чем в 5.1
Это SQL-запрос:
SELECT `companies`.*
FROM `companies`
LEFT OUTER JOIN `company_texts`
ON `company_texts`.`company_id` = `companies`.`id`
AND `company_texts`.`language` = 'en'
AND `company_texts`.`region` = 'US'
INNER JOIN show_texts
ON show_texts.company_id = companies.id
AND `show_texts`.`is_deleted` = 0
AND `show_texts`.`language` = 'en'
AND `show_texts`.`region` = 'US'
INNER JOIN show_region_counts
ON show_region_counts.show_id = show_texts.show_id
AND show_region_counts.region = 'US'
WHERE ((`companies`.`id` NOT IN ('77', '26'))
AND (`company_texts`.is_deleted = 0)
AND `companies`.id IN (
SELECT DISTINCT show_texts.company_id AS
id
FROM shows
INNER JOIN `show_rollups`
ON
`show_rollups`.`show_id` = `shows`.`id`
AND (`show_rollups`.`device_id` = 3)
AND (`show_rollups`.`package_group_id` = 2)
AND (`show_rollups`.`videos_count` > 0)
LEFT OUTER JOIN `show_texts` ON
`show_texts`.`show_id` = `shows`.`id`
AND
`show_texts`.`is_deleted` = 0
AND
`show_texts`.`language` = 'en'
AND
`show_texts`.`region` = 'US'
AND
shows.is_browseable = 1
AND
show_texts.show_id IS NOT NULL
AND (
`show_rollups`.`episodes_count` > 0
OR `show_rollups`.`clips_count` > 0
OR `show_rollups`.`games_count` > 0
)
))
GROUP BY companies.id
ORDER BY Sum(show_region_counts.view_count) DESC
LIMIT 30 offset 30;
Теперь проблема, когда я запускаю этот запрос в MySQL 5.1.73 перед обновлением, запрос будет только займет около 1,5 секунды, но после обновления до 5.6 .23, теперь он может подняться до 1 минуты.
Так что я сделал EXPLAIN этого запроса в 5.1.73, и я увидел это:
Увеличенная версия: http://i.stack.imgur.com/c4ko0.jpg
И когда я объясняю в 5.6.23, я увидел это:
Увеличенная версия: http://i.stack.imgur.com/CgBtA.jpg
Я могу видеть, что в обоих случаях есть полное сканирование (введите ALL) Т.Г. e показывает таблицу, но есть ли что-то еще, что я не вижу, что вызывает массовое замедление в 5.6?
Благодаря IS
Я не могу прочитать эти планы объяснения - вы бы вставляли их в виде моноширинного текста? – halfer
Пожалуйста, напишите отчет об ошибке на http: bugs.mysql.com; они хотят знать о случаях, когда новый оптимизатор хуже, чем старый. –
от маленького я могу разобраться, что второй план объяснения выглядит лучше, чем первый –