如何优化此查询

Query:
SQL code
SELECT DISTINCT n.id

FROM blog_news n

WHERE n.active = '1' AND trim(n.title) != '' AND (EXISTS (SELECT 1

            FROM blog_pics p

            WHERE p.blogid = n.id

            AND p.islogo = 0)

OR EXISTS (SELECT 1

            FROM blog_vdos v

            WHERE v.blogid = n.id)

)

ORDER BY n.newsdate desc, n.createdate desc limit 0,5;
 
 

Relevant tables:
SQL code
CREATE TABLE IF NOT EXISTS `blog_news` (

  `id` int(11) NOT NULL auto_increment,

  `createdate` datetime NOT NULL default '0000-00-00 00:00:00',

  `title` text collate utf8_bin NOT NULL,

  `newsdate` datetime NOT NULL default '0000-00-00 00:00:00',

  `active` tinyint(4) NOT NULL default '0',

  PRIMARY KEY  (`id`)

) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

 

CREATE TABLE IF NOT EXISTS `blog_pics` (

  `id` int(11) NOT NULL auto_increment,

  `blogid` int(11) NOT NULL default '0',

  `islogo` tinyint(4) NOT NULL default '0',

  PRIMARY KEY  (`id`)

) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

 

CREATE TABLE IF NOT EXISTS `blog_vdos` (

  `id` int(11) NOT NULL auto_increment,

  `blogid` int(11) NOT NULL default '0',

  PRIMARY KEY  (`id`)

) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

作者: zcy_dr   发布时间: 2011-05-11

blog_pics.blogid
blog_vdos.blogid
这两个加索引

作者: rucypli   发布时间: 2011-05-11