优化SQL查询以加速目前大约需要85秒的搜索

时间:2014-05-06 07:49:32

标签: mysql search optimization

我有一个数据库,其记录接近270万。我需要从中获取记录,因为我正在使用以下查询

结果

SELECT r3.original_image_title,r3.uuid,r3.original_image_URL FROM `image_attributes` AS r1 INNER JOIN `filenames` as r3 WHERE r1.`uuid` = r3.`uuid` and r3.`status` = 1 and r1.status=1 and (r1.`attribute_name` like "Quvenzhané Wallis%" or r3.original_image_URL like "Quvenzhané Wallis%") group by r3.`uuid` limit 0,20

总计数

SELECT count(DISTINCT(r1.`uuid`)) as count FROM `image_attributes` AS r1 INNER JOIN `filenames` as r3 WHERE r1.`uuid` = r3.`uuid` and r3.`status` = 1 and r1.status=1 and (r1.`attribute_name` like "Quvenzhané Wallis%" or r3.original_image_URL like "Quvenzhané Wallis%")  

表格结构如下

CREATE TABLE IF NOT EXISTS `image_attributes` (
  `index` int(11) NOT NULL AUTO_INCREMENT,
  `attribute_name` text NOT NULL,
  `attribute_type` varchar(255) NOT NULL,
  `uuid` varchar(255) NOT NULL,
  `status` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`index`),
  KEY `attribute_type` (`attribute_type`),
  KEY `uuid` (`uuid`),
  KEY `status` (`status`),
  KEY `attribute_name` (`attribute_name`(50))
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2730431 ;



CREATE TABLE IF NOT EXISTS `filenames` (
  `index` int(11) NOT NULL AUTO_INCREMENT,
  `original_image_title` text NOT NULL,
  `original_image_URL` text NOT NULL,
  `uuid` varchar(255) NOT NULL,
  `status` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`index`),
  KEY `uuid` (`uuid`),
  KEY `original_image_URL` (`original_image_URL`(50))
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=591967 ;

请建议我如何优化查询以加快搜索结果

1 个答案:

答案 0 :(得分:0)

我会向您推荐一本名为'High Performance MySql'的书。有一个名为Optimize数据库和查询的部分,或类似的东西。