Есть ли способ ускорить этот рабочий запрос?Как я могу ускорить этот запрос sql с помощью подстроки?
У меня есть 4 таблицы в моей базе данных (Area, APeriod, Data, Item). Они настроены следующим образом [column_name (с примерами)]:
Area [код_города (A102)] [AREA_NAME (Филадельфия-Уилмингтон Атлантик-Сити, штат Пенсильвания-Нью-Джерси DE-MD]
APeriod [период (M01)] [period_abbr (JAN)] [period_name (январь)]
Пункт [ITEM_CODE (701322)] [item_name (спагетти и макароны, за фунт 453,6 г)]
данных [series_id] [год (1995)] [период (M01)] [значение (0.235)] [footnote_codes]
Описание запроса - Определите соотношение цены за фунт бифштекса [703611] к вину, красному и белым столам (все размеры, любое происхождение; на 1 литр) [702311] в Майами-FT. Лодердейл, агрегированный по месяцам и отдельно агрегированный по годам с 1995 года по настоящее время.
Код запроса:
SELECT main.year, APeriod.period_name, steak.value AS Steak, wine.value AS Wine, steak.value/wine.value AS Ratio
FROM
(SELECT DISTINCT year, period FROM Data) main
INNER JOIN APeriod ON main.period = APeriod.period
LEFT OUTER JOIN Data steak ON steak.series_id ='APU0100703611' AND main.year=steak.year AND main.period=steak.period
LEFT OUTER JOIN Data wine ON wine.series_id ='APU0400720311' AND main.year=wine.year AND main.period=wine.period
ORDER BY main.year, main.period
Этот запрос работает, но это занимает сервер MySQL на среднем 129 секунд, чтобы запустить этот запрос (который я сказал до смешного долго). Пример возврата
[Отображение на строки 0 - 24 (209 Всего запросов занял 137.6224 секунд.) [Год: 1995 - 1997]
год period_name Steak Вино Ratio
1995 Январь 3,593 NULL NULL
1995 February3.510 NULL NULL
1995 Март 3,708 NULL NULL
1995 апрель 3,747 NULL NULL
1995 май 3,462 NULL NULL
1995 июнь 3,742 NULL NUL L
1995 Июль 3,686 4,661 0,7908174
1995 Август 3,823 3,978 0,9610357
1995 Septemb 3,625 4,580 0,7914847
1995 октябрь 3,795 4.042 0.9388916
1995 November3.509 4.760 0.7371849
1995 December3.315 4,056 0,8173077
(не мог» t вставить изображение должным образом, извините)
Я попытался взять подстроку и создать представление, чтобы ускорить работу, но столкнулся с другими ошибками, что заставило меня поверить, что я сделал что-то неправильно, поскольку я новичок в sql. Есть ли способ ускорить это? Если да, пожалуйста, покажи мне. Заранее спасибо.
Вы должны опубликовать определения таблиц - _i.e._, 'CREATE TABLE' для каждого из них. – leon