【问题标题】:Optimize sql query to speed up a search which currently takes around 85 seconds优化 sql 查询以加快搜索速度,目前大约需要 85 秒
【发布时间】:2014-05-21 03:22:59
【问题描述】:

我有一个数据库,其记录接近 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 ;

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

【问题讨论】:

  • 我确定OR条件正在杀死查询,让我在本地服务器上做一些优化测试,之后会回来。
  • 您应该使用FOUND_ROWS 而不是您的第二个查询。
  • 这个问题似乎跑题了,因为它是SQL优化,更适合codereview.stackexchange.comdba.stackexchange.com
  • 有趣的解释看起来给出了很好的结果,我正在处理一小部分数据,请您运行explain your query 并在问题中分享结果。

标签: mysql search optimization


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-10-23
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多