优化MySQL查询/数据库结构

优化MySQL查询/数据库结构,sql,database,mysql,Sql,Database,Mysql,我的MySQL数据库中有两个表: CREATE TABLE IF NOT EXISTS `articles` ( `id` bigint(20) NOT NULL, `url` varchar(255) collate utf8_bin NOT NULL, `img` varchar(255) collate utf8_bin NOT NULL, `name` varchar(255) character set utf8 collate utf8_unicode_ci NOT

我的MySQL数据库中有两个表:

CREATE TABLE IF NOT EXISTS `articles` (
  `id` bigint(20) NOT NULL,
  `url` varchar(255) collate utf8_bin NOT NULL,
  `img` varchar(255) collate utf8_bin NOT NULL,
  `name` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  `url_key` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  `type_code` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  `likes_count` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `type` (`type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

CREATE TABLE IF NOT EXISTS `articles_types` (
  `id` int(11) NOT NULL auto_increment,
  `code` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  `url_key` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  `name` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `name` (`code`),
  KEY `type` (`name`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
我正在尝试运行此查询:

SELECT a.* FROM `articles` a INNER JOIN articles_types at ON at.`code`=a.type ORDER BY p.likes_count DESC LIMIT 1
返回1行,以1秒为单位

表中的文章大约有超过70k行,文章类型只有大约70行


是否有机会优化该表的结构(可能是引擎?),或者优化查询本身以使其更快?

您应该检查查询的输出


你很可能是按顺序来的,所以在文章上创建一个索引。你应该在查询中检查的输出


很可能是按顺序排列的,所以请为文章创建索引。这些表上有索引吗?如果是这样,让我们知道哪些列被覆盖。2Dustin:正如您在上面所看到的,这些表由许多索引组成,现在我为articles添加了一个新的索引。例如_count,因为结果是按此列排序的。但是这没有帮助。2达米恩:谢谢你考虑这个问题:-)相信我,如果我能得到真正的答案,解决我的问题,我会接受这个答案。这些表上有索引吗?如果是这样,让我们知道哪些列被覆盖。2Dustin:正如您在上面所看到的,这些表由许多索引组成,现在我为articles添加了一个新的索引。例如_count,因为结果是按此列排序的。达米恩:谢谢你的考虑:-)相信我,如果我能得到真正的答案,解决我的问题,我会接受这个答案。你完全正确。这里的问题是排序-但即使在将索引添加到articles.likes_count之后,它也需要1-2秒。如果没有排序结果(没有排序依据),它的速度非常快-例如0.0004秒。它有助于使用左联接而不是内联接。也许它会发生,那将出现一篇类别未知的文章,所以我必须在应用程序中检查它。你完全正确。这里的问题是排序-但即使在将索引添加到articles.likes_count之后,它也需要1-2秒。如果没有排序结果(没有排序依据),它的速度非常快-例如0.0004秒。它有助于使用左联接而不是内联接。可能会出现一篇类别未知的文章,所以我必须在应用程序中检查。