Задавайте вопросы, мы ответим
Вы не зашли.
(в таблицах firm_tovar (1 млн.) , firms (10 тис.))
Выполняю запрос:
SELECT t.`id`, t.`text`
FROM `firm_tovar` t
JOIN `firms` f ON (t.`id_firm`=f.`id`)
JOIN `firm_obl_ids` o ON (o.`firm_id`=f.`id` AND o.`obl_id`=9)
JOIN `country` c ON (t.`id_country`=c.`id`)
WHERE t.`id_`=733 LIMIT 1000,5;
очень долго (порядка 2 сек.)
EXPLAIN :
id select_type table type possible_keys key key_len ref rows Extra
1,0 SIMPLE t ref FK_firm_tovar-id_firm,firm_tovar-id_-id_firm-id_country firm_tovar-id_-id_firm-id_country 2 const 32832,0 Using index
1,0 SIMPLE f eq_ref PRIMARY PRIMARY 4 building_ua_com.t.id_firm 1,0 Using index
1,0 SIMPLE o eq_ref firm_obl_ids-firm_id-obl_id firm_obl_ids-firm_id-obl_id 5 building_ua_com.t.id_firm,const 1,0 Using index
1,0 SIMPLE c eq_ref PRIMARY PRIMARY 1 building_ua_com.t.id_country 1,0 Using where; Using index
SELECT t.`id`
FROM `firm_tovar` t
JOIN `firms` f ON (t.`id_firm`=f.`id`)
JOIN `firm_obl_ids` o ON (o.`firm_id`=f.`id` AND o.`obl_id`=9)
JOIN `country` c ON (t.`id_country`=c.`id`)
WHERE t.`id_`=733 LIMIT 1000,5;
очень бистро (0.002 сек.). Получяю список id (590859, 590871, 591410, 591430, 592246)
дальше запрос
SELECT t.`id`, t.`text`
FROM `firm_tovar` t
JOIN `firms` f ON (t.`id_firm`=f.`id`)
JOIN `firm_obl_ids` o ON (o.`firm_id`=f.`id` AND o.`obl_id`=9)
JOIN `country` c ON (t.`id_country`=c.`id`)
WHERE t.`id` in (590859, 590871, 591410, 591430, 592246);
очень бистро (0.002 сек.).
Почему тормозит так сильно когда к полям добавляю поле t.`text`? Помогите пожалуйста?
Неактивен
EXPLAIN осмысленный. Видимо, t.text — это широкая колонка, которую Вы
просто долго выбираете (LIMIT 1000 всё-таки).
Неактивен
Да так и есть! А както мождна ето избежать?
Неактивен
Я вижу два выхода — не выбирать эту колонку или не использовать LIMIT 1000.
Последнее — в любом случае какой-то страшный зверь.
Неактивен
ну колонка нужна точно, а лимит ето я так поставил, для теста! На сайте есть листаловка по страничках и вот емоно на последних страничках и будет большой LIMIT (например 1000, 20)
Неактивен