慢查询,我可以加快速度吗?

时间:2010-07-22 21:43:11

标签: sql mysql

我正在使用在同一服务器上运行的python脚本检索数据库中存储为blob的图像。

   SELECT * 
     FROM imagedb_production.imagedb IMAGE 
LEFT JOIN dccms_production.tblmedia MEDIA ON IMAGE.name = MEDIA.name 
LEFT JOIN dccms_production.tblmultimedia CAP ON MEDIA.contentItemID = CAP.contentItemID 
    LIMIT 5000,100;

EXPLAIN返回

id  select_type table   type    possible_keys               key         key_len     ref                                     rows    Extra
1   SIMPLE      IMAGE   index   NULL                        name_idx        767     NULL                                    10145962        Using index
1   SIMPLE      MEDIA   ref     name                        name            63      imagedb_production.IMAGE.name           1   
1   SIMPLE      CAP     eq_ref  PRIMARY,idx_contentItemID   PRIMARY         4       dccms_production.MEDIA.contentItemID    1       Using index

(抱歉输出看起来像垃圾)

这个查询花了将近12分钟是否有任何方法可以在通过调优mysql数据库实例之前加快速度?

其他信息

'imagedb', 'CREATE TABLE `imagedb` (
  `multimediaID` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  `content` mediumblob,
  `description` longtext,
  `mime_type` varchar(255) default NULL,
  PRIMARY KEY  (`multimediaID`),
  KEY `name_idx` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=2320759 DEFAULT CHARSET=utf8'


'tblmedia', 'CREATE TABLE `tblmedia` (
  `mediaID` int(11) NOT NULL auto_increment,
  `contentItemID` int(11) NOT NULL default ''0'',
  `name` varchar(255) default NULL,
  `width` int(11) default NULL,
  `height` int(11) default NULL,
  `file1Size` bigint(20) default NULL,
  `file2Size` bigint(20) default NULL,
  `mediaSlug` int(11) default NULL,
  PRIMARY KEY  (`mediaID`),
  KEY `idx_contentItemID` (`contentItemID`),
  KEY `name` (`name`(20))
) ENGINE=InnoDB AUTO_INCREMENT=899975 DEFAULT CHARSET=utf8'

'tblmultimedia', 'CREATE TABLE `tblmultimedia` (
  `contentItemID` int(11) NOT NULL default ''0'',
  `caption` text,
  `mimeType` varchar(255) default NULL,
  PRIMARY KEY  (`contentItemID`),
  KEY `idx_contentItemID` (`contentItemID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8'

1 个答案:

答案 0 :(得分:0)

你有10,000,000行没有排序,我会解决这个问题。添加默认的order by子句。

较早版本的MySQL直到很久之后才考虑限制条款。我认为新版本可以做得更好。您可能想要检查以不同的方式来限制结果集。