优化MySQL查询/数据库结构
我的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
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秒。它有助于使用左联接而不是内联接。可能会出现一篇类别未知的文章,所以我必须在应用程序中检查。