|
|
|
| Всем привет. Нужна Ваша помощь, чтобы ускорить процесс выборки из БД. Сейчас запрос выполняется 978 мс при лимите в 3 записи :(
SELECT b.`em_package_name`,
b.`em_package_type`,
c.`em_produce_name`,
c.`em_produce_url`,
c.`em_produce_desc`,
c.`em_produce_image_sm`,
c.`em_produce_price_ua`,
c.`em_produce_price_us`,
c.`em_produce_price_eu`,
d.`em_produce_stat_overal`
FROM `em_company` a
JOIN `em_package` b ON (b.`em_package_id` = a.`em_package_id`)
JOIN `em_produce` c ON (c.`em_company_id` = a.`em_company_id`)
LEFT JOIN `em_produce_stat` d ON (d.`em_produce_id` = c.`em_produce_id`)
WHERE b.`em_package_updated_produce` = 'y'
AND a.`em_company_access` = 'y'
AND a.`em_company_deleted` = 'n'
AND c.`em_produce_access` = 'y'
AND c.`em_produce_deleted` = 'n'
ORDER BY c.`em_produce_data_upd` DESC
LIMIT 3
|
В таблице company - 2400 rows, package - 10 rows, produce - 24 000 rows, produce_stat - чуть меньше 24 000 rows.
Запрос данного вида выполняется 78 мс.
SELECT b.`em_package_name`,
b.`em_package_type`
FROM `em_company` a
JOIN `em_package` b ON (b.`em_package_id` = a.`em_package_id`)
WHERE b.`em_package_updated_produce` = 'y'
AND a.`em_company_access` = 'y'
AND a.`em_company_deleted` = 'n'
LIMIT 3
|
Запрос следующего вида выполняется 797 мс, почти в 10 раз возросло время.
SELECT b.`em_package_name`,
b.`em_package_type`,
c.`em_produce_name`,
c.`em_produce_url`,
c.`em_produce_desc`,
c.`em_produce_image_sm`,
c.`em_produce_price_ua`,
c.`em_produce_price_us`,
c.`em_produce_price_eu`
FROM `em_company` a
JOIN `em_package` b ON (b.`em_package_id` = a.`em_package_id`)
JOIN `em_produce` c ON (c.`em_company_id` = a.`em_company_id`)
WHERE b.`em_package_updated_produce` = 'y'
AND a.`em_company_access` = 'y'
AND a.`em_company_deleted` = 'n'
AND c.`em_produce_access` = 'y'
AND c.`em_produce_deleted` = 'n'
ORDER BY c.`em_produce_data_upd` DESC
LIMIT 3
|
Как бы мне сократить это время, а то не хочется, чтобы такой запрос тормозил главную сайта. | |
|
|
|
|
|
|
|
для: TetRiska
(27.06.2011 в 12:36)
| | Какой размер таблиц (в МБ) и как они проиндексированы? | |
|
|
|
|
|
|
|
для: cheops
(27.06.2011 в 12:38)
| | вопрос снят, пошел иным путем без перелопачивания всех данных в таблицах, время уже радует, спасибо | |
|
|
|