簡體   English   中英

內部連接0846秒的慢速mysql查詢

[英]slow mysql query with inner join 0846 sec

我對INNER JOIN使用查詢時遇到另一個問題

這個查詢

SELECT *
FROM `engine4_product_file` INNER JOIN
     `engine4_file`
     ON engine4_product_file.fid = engine4_file.id
WHERE engine4_product_file.pid IN (3347,3346,3345,3343,3342,3337) and
      engine4_file.active = 1 AND
      engine4_file.ext IN ('jpg','gif','png','jpeg')

這個創建表engine4_product_file

 CREATE TABLE `engine4_product_file` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fid` int(11) NOT NULL,
  `pid` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `engine4_product_file` (`fid`),
  KEY `pid` (`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=6549 DEFAULT CHARSET=latin1

這個創建表engine4_file

CREATE TABLE `engine4_file` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uid` int(11) NOT NULL,
  `name` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `url` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `active` int(11) NOT NULL DEFAULT '1',
  `size` int(11) DEFAULT NULL,
  `ext` varchar(10) DEFAULT NULL,
  `folder` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=48801 DEFAULT CHARSET=latin1

這解釋

id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra   
1   SIMPLE  engine4_product_file    range   engine4_product_file,pid    pid     4   NULL    30  Using where
1   SIMPLE  engine4_file    eq_ref  PRIMARY     PRIMARY     4   akafine_social2.engine4_product_file.fid    1   Using where

更改您的條件

  WHERE  engine4_file.active = 1 AND
         engine4_file.ext IN ('jpg','gif','png','jpeg') AND
  engine4_product_file.pid IN (3347,3346,3345,3343,3342,3337) 

添加索引

 ALTER TABLE engine4_file ADD KEY (active,ext)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM