Категории |
Проблемы с 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 должен для них создать временную таблицу, поместить все это туда и потом пошагово выполнять все действия. Мне действительно неприятно сейчас все это Вам писать однако я рекомендую Вам обратиться к разработчику сайта для оптимизации запросов. Вопрос это связано с настройками или с увеличением базы данных. Раньше проблем небыло. это вывод Так же покупают. проблема с этим запросом часто всплывает. Подскажите пожалуйста где его можно отключить, у меня не где не выводится эти записи Может знает кто, где можно удалить этот запрос? |
|