Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте.
Подскажите пожалуйста как можно ускорить запросы и избавиться от Using temporary; Using filesort?
Отредактированно mordan (12.02.2011 20:04:51)
Неактивен
А ключик на goods_brands (id, item) есть?
Неактивен
сделал - но не помогло ...
Неактивен
Приведите SHOW CREATE TABLE используемых таблиц. И новый EXPLAIN
Неактивен
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE p ref category_id,brand_id,avaible,bc,approved,approved_... approved_2 12 const,const,const 3798 Using where; Using temporary; Using filesort
1 SIMPLE b eq_ref PRIMARY,id PRIMARY 4 freesell_new.p.brand_id 1
goods_brands | CREATE TABLE `goods_brands` (
`id` int(11) NOT NULL auto_increment,
`parent_id` int(11) NOT NULL default '0',
`item` varchar(255) NOT NULL default '',
`item_path` varchar(255) NOT NULL default '',
`dirt` tinyint(4) NOT NULL default '0',
`official_site_url` varchar(255) NOT NULL,
`sinonim` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `item` (`item`),
KEY `item_path` (`item_path`),
KEY `id` (`id`,`item`)
) ENGINE=MyISAM AUTO_INCREMENT=2433 DEFAULT CHARSET=cp1251
CREATE TABLE `price` (
`id` int(11) NOT NULL auto_increment,
`goods_id` int(11) NOT NULL default '0',
`brand_id` int(11) NOT NULL default '0',
`category_id` int(11) NOT NULL default '0',
`user_id` int(10) unsigned NOT NULL default '0',
`name` varchar(255) NOT NULL default '',
`brand` varchar(32) NOT NULL default '',
`description` text NOT NULL,
`price` decimal(10,2) unsigned NOT NULL default '0.00',
`price_grn` decimal(10,2) NOT NULL default '0.00',
`opt_price` decimal(10,2) unsigned NOT NULL default '0.00',
`garant` varchar(32) default NULL,
`delivery` text NOT NULL,
`url_pic` text NOT NULL,
`url_basket` text NOT NULL,
`url_description` text NOT NULL,
`avaible` int(1) NOT NULL default '0',
`date_update` date NOT NULL default '0000-00-00',
`c_count` int(11) NOT NULL default '0',
`indexing` tinyint(1) NOT NULL default '0',
`hash` varchar(32) NOT NULL default '',
`p_click` decimal(10,2) NOT NULL,
`approved` int(1) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `category_id` (`category_id`),
KEY `goods_id` (`goods_id`),
KEY `indexing` (`indexing`),
KEY `brand_id` (`brand_id`),
KEY `avaible` (`avaible`),
KEY `price` (`price`),
KEY `hash` (`hash`),
KEY `user_id_2` (`user_id`,`category_id`,`avaible`),
KEY `bc` (`brand_id`,`category_id`),
KEY `approved` (`approved`,`goods_id`),
KEY `approved_3` (`approved`,`avaible`,`brand_id`,`category_id`),
KEY `price_grn` (`price_grn`),
KEY `approved_2` (`approved`,`avaible`,`category_id`)
) ENGINE=InnoDB AUTO_INCREMENT=256463461 DEFAULT CHARSET=cp1251 |
Неактивен
ещё вопрос - в прошлом году , я заказывал у Вас оптимизацию, но так как была проблема с серверами, что то не получилось тогда оптимизировать хотя деньги я заплатил, возможно можно продолжить ?
Неактивен
Попробуйте добавить индекс KEY (`brand_id`,`approved`,`avaible`,`category_id`) и добавить STRAIGHT_JOIN к SELECT.
(SELECT STRAIGHT_JOIN ... *)
Второй запрос выглядит нормально.
Неактивен
mordan написал:
ещё вопрос - в прошлом году , я заказывал у Вас оптимизацию, но так как была проблема с серверами, что то не получилось тогда оптимизировать хотя деньги я заплатил, возможно можно продолжить ?
нашел Вас в базе клиентов, 20 марта прошлого года общались. Давайте продолжим, пишите на email.
Неактивен
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE b ALL PRIMARY,id NULL NULL NULL 2263 Using temporary; Using filesort
1 SIMPLE p ref category_id,brand_id,avaible,bc,approved,approved_... bc 8 freesell_new.b.id,const 16 Using where
Using temporary; Using filesort осталось - но запрос стал кешироваться и работать в 10 раз быстрее.
Неактивен