Kane
Новичок
Оптимизация таблицы и запроса.
Дана таблица:
CREATE TABLE `icp_story` (
`autoid` int(11) unsigned NOT NULL auto_increment,
`id` int(11) default NULL,
`userid` int(11) default NULL,
`status` tinyint(3) default '0',
`internalurl` varchar(255) default NULL,
`url` varchar(255) default NULL,
`title` varchar(255) default NULL,
`description` text,
`created` datetime default NULL,
`commentscount` int(11) default '0',
`tagscount` int(11) default '0',
`promoteddate` datetime default NULL,
PRIMARY KEY (`autoid`),
UNIQUE KEY `id` (`id`),
UNIQUE KEY `q1` (`status`,`promoteddate`,`commentscount`)
) TYPE=MyISAM PACK_KEYS=0
И запрос:
explain
select m.name,m.email,m.lastlogged,s.*,
sc.title as category, stta.id as tagged
from icp_story s, icp_story_category sc, icp_story_tag st, icp_core_members m
left join icp_story_tagged stta on (s.id=stta.storyid and stta.userid='0')
where st.storyid=s.id and st.tagid=sc.id and m.id=s.userid and s.status='1'
order by s.promoteddate DESC LIMIT 0, 20;
Для этой таблицы выводится:
table type possible_keys key key_len ref rows Extra
s ref id,q1 q1 2 const 295 Using where; Using temporary; Using filesort
Собственно интересует как избавиться от filesort и temporary.
Спасибо.
Дана таблица:
CREATE TABLE `icp_story` (
`autoid` int(11) unsigned NOT NULL auto_increment,
`id` int(11) default NULL,
`userid` int(11) default NULL,
`status` tinyint(3) default '0',
`internalurl` varchar(255) default NULL,
`url` varchar(255) default NULL,
`title` varchar(255) default NULL,
`description` text,
`created` datetime default NULL,
`commentscount` int(11) default '0',
`tagscount` int(11) default '0',
`promoteddate` datetime default NULL,
PRIMARY KEY (`autoid`),
UNIQUE KEY `id` (`id`),
UNIQUE KEY `q1` (`status`,`promoteddate`,`commentscount`)
) TYPE=MyISAM PACK_KEYS=0
И запрос:
explain
select m.name,m.email,m.lastlogged,s.*,
sc.title as category, stta.id as tagged
from icp_story s, icp_story_category sc, icp_story_tag st, icp_core_members m
left join icp_story_tagged stta on (s.id=stta.storyid and stta.userid='0')
where st.storyid=s.id and st.tagid=sc.id and m.id=s.userid and s.status='1'
order by s.promoteddate DESC LIMIT 0, 20;
Для этой таблицы выводится:
table type possible_keys key key_len ref rows Extra
s ref id,q1 q1 2 const 295 Using where; Using temporary; Using filesort
Собственно интересует как избавиться от filesort и temporary.
Спасибо.