zip111
Новичок
Оптимизация запроса
Здравствуйте.
Как можно оптимизировать запрос типа:
SELECT id, c_name, format( rand( ) *100, 0 ) *35 + format( c_budget *100 / (
SELECT max( c_budget )
FROM campaign ) , 0 ) *35 + format( link_cost *100 / (
SELECT max( link_cost )
FROM campaign ) , 0 ) *30 AS koeff
FROM `campaign`
WHERE c_status != '1'
AND user_id = '1'
ORDER BY koeff DESC
LIMIT 0,30
Таблица
CREATE TABLE `campaign` (
`id` int(10) unsigned NOT NULL auto_increment,
`user_id` int(10) unsigned NOT NULL,
`c_name` varchar(25) collate cp1251_bin NOT NULL,
`c_type` tinyint(1) default NULL,
`c_region` varchar(15) collate cp1251_bin NOT NULL,
`c_key` varchar(15) collate cp1251_bin NOT NULL,
`c_about` varchar(70) collate cp1251_bin NOT NULL,
`c_link` varchar(50) collate cp1251_bin NOT NULL,
`c_status` tinyint(1) NOT NULL,
`c_budget` decimal(10,2) default '0.00',
`link_cost` decimal(10,2) default '0.00',
`c_trans` int(11) default '0',
`c_shows` int(11) default '0',
PRIMARY KEY (`id`),
KEY `c_budget` (`c_budget`),
KEY `c_status` (`c_status`),
KEY `c_key` (`c_key`),
KEY `link_cost` (`link_cost`),
KEY `c_type` (`c_type`),
KEY `c_region` (`c_region`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin;
В ней 850.000 записей. Время обработки запроса - 6 сек.
explain:
Здравствуйте.
Как можно оптимизировать запрос типа:
SELECT id, c_name, format( rand( ) *100, 0 ) *35 + format( c_budget *100 / (
SELECT max( c_budget )
FROM campaign ) , 0 ) *35 + format( link_cost *100 / (
SELECT max( link_cost )
FROM campaign ) , 0 ) *30 AS koeff
FROM `campaign`
WHERE c_status != '1'
AND user_id = '1'
ORDER BY koeff DESC
LIMIT 0,30
Таблица
CREATE TABLE `campaign` (
`id` int(10) unsigned NOT NULL auto_increment,
`user_id` int(10) unsigned NOT NULL,
`c_name` varchar(25) collate cp1251_bin NOT NULL,
`c_type` tinyint(1) default NULL,
`c_region` varchar(15) collate cp1251_bin NOT NULL,
`c_key` varchar(15) collate cp1251_bin NOT NULL,
`c_about` varchar(70) collate cp1251_bin NOT NULL,
`c_link` varchar(50) collate cp1251_bin NOT NULL,
`c_status` tinyint(1) NOT NULL,
`c_budget` decimal(10,2) default '0.00',
`link_cost` decimal(10,2) default '0.00',
`c_trans` int(11) default '0',
`c_shows` int(11) default '0',
PRIMARY KEY (`id`),
KEY `c_budget` (`c_budget`),
KEY `c_status` (`c_status`),
KEY `c_key` (`c_key`),
KEY `link_cost` (`link_cost`),
KEY `c_type` (`c_type`),
KEY `c_region` (`c_region`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin;
В ней 850.000 записей. Время обработки запроса - 6 сек.
explain:
Спасибоid select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY campaign ALL c_status NULL NULL NULL 855098 Using where; Using temporary; Using filesort
3 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away