Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Проблемы с sql запросами

Возьмем к примеру то что убилось сегодня:
2014-11-25 11:11:18 INFO MYSQL: Database spigik_milv query killed (>120 seconds): COMMAND: Query | DB: spigik_milv | HOST: localhost | ID: 844811 | INFO: select p.products_fsk18,p.products_id,p.products_price,p.products_tax_class_id,p.products_image,pd.products_name,p.products_vpe,p.products_vpe_status,p.products_vpe_value,pd.products_short_description FROM os_orders_products opa, os_orders_products opb, os_orders o, os_products p, os_products_description pd where opa.products_id = '2878' and opa.orders_id = opb.orders_id and opb.products_id != '2878' and opb.products_id = p.products_id and opb.orders_id = o.orders_id and p.products_status = '1'  and pd.language_id = '1' and opb.products_id = pd.products_id group by p.products_id order by o.date_purchased

Сделаем EXPLAIN этого запроса:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE opa ALL NULL NULL NULL NULL 489973 Using where; Using temporary; Using filesort
1 SIMPLE o eq_ref PRIMARY PRIMARY 4 spigik_milv.opa.orders_id 1 NULL
1 SIMPLE opb ALL NULL NULL NULL NULL 489973 Using where; Using join buffer (Block Nested Loop)
1 SIMPLE p eq_ref PRIMARY PRIMARY 4 spigik_milv.opb.products_id 1 Using where
1 SIMPLE pd eq_ref PRIMARY PRIMARY 8 spigik_milv.opb.products_id,const 1 NULL
Этот запрос сформирован настолько некорректно что он не выполнится и за 20 минут.
Для начала посчитаем количество строк которое MySQL будет сначала связывать. 489973 * 489973 * 4 * 4 * 8 = 30729413213312 строк. После чего без использования индексов запрос начинает сортировать эти значения (а это значит fullscan всех этих строк) и применять к ним условия WHERE. В дополнение ко всему, чтобы хоть как то этими данными рулить, MYSQL должен для них создать временную таблицу, поместить все это туда и потом пошагово выполнять все действия.

Мне действительно неприятно сейчас все это Вам писать однако я рекомендую Вам обратиться к разработчику сайта для оптимизации запросов.


Вопрос это связано с настройками или с увеличением базы данных. Раньше проблем небыло.


это вывод Так же покупают. проблема с этим запросом часто всплывает.
Нужно переделывать.


Подскажите пожалуйста  где его можно отключить, у меня не где не выводится эти записи


Может знает кто, где можно удалить этот запрос?


Источник



Copyright ShopOS