论坛首页 综合技术论坛

MYSQL优化问题

浏览 3031 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-14  

在EXPLAIN SELECT时,看到有:
extra

Using temporary; Using filesort

似乎这样会降低查询速度,不知如何解决


查询涉及 两个表 : table a, table b

a和 b都有一个字段 type,type有一个外键参考另外一个表c的id

查询语句类似如此

SELECT * from a,b
WHERE b.status = 100   AND
a.type = b.type
ORDER BY a.create DESC LIMIT 20


其中 a.create 记录建立起的时间戳 有索引
b.status 也是另外一个表的外键

表a的记录比较多(现在也就几万条吧,以后会更多,所以希望优化一下查询速度)

表b还好也就5千条左右。

不知道上述查询有什么问题,造成了extra的Using temporary; Using filesort?
   发表时间:2007-05-15  
这样子行不行:
select * from a join b on a.type = b.type where b.status = 100 order by a.create desc limit 20 ;

在 a.create 上设置索引。

能不能表的创建语句贴出来,要不谁有心情给你调试。

0 请登录后投票
   发表时间:2007-05-15  
主要我希望知道如何解决出现这个的问题:
Using temporary; Using filesort

大致的建表语句如下

CREATE TABLE `a` (
  `id` int(11) NOT NULL auto_increment,
  `type` int(11) NOT NULL,
  `name` varchar(64) NOT NULL,
  `create` datetime default NULL,
  `status` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `index_create` (`create`),
  KEY `fk_a_type` (`type`),
) ENGINE=InnoDB;

CREATE TABLE `b` (
  `id` int(11) NOT NULL auto_increment,
  `status` int(11) NOT NULL,
  `type` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `fk_status` (`status`),
  KEY `fk_b_type` (`type`),
) ENGINE=InnoDB;


0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics