gpt4 book ai didi

mysql - 我怎样才能让这个mysql查询更有效率呢?

转载 作者:行者123 更新时间:2023-11-29 12:56:57 26 4
gpt4 key购买 nike

我有一个类别表、帖子表和一个 M2M 表category_post。这是他们的架构

CREATE TABLE IF NOT EXISTS `posts` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`title` char(255) COLLATE utf8_unicode_ci NOT NULL,
`img_url` char(255) CHARACTER SET latin1 NOT NULL,
`content` text COLLATE utf8_unicode_ci NOT NULL,
`pub_date` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `pub_date` (`pub_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=42166 ;

-- --------------------------------------------------------

CREATE TABLE IF NOT EXISTS `category` (
`c_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
`c_name` char(255) CHARACTER SET latin1 NOT NULL,
`c_slug` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`c_active` tinyint(1) NOT NULL,
PRIMARY KEY (`c_id`),
KEY `c_slug` (`c_slug`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='List of Categories' AUTO_INCREMENT=47 ;

-- --------------------------------------------------------

CREATE TABLE IF NOT EXISTS `category_post` (
`cp_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`category_id` tinyint(3) unsigned NOT NULL,
`post_id` mediumint(8) unsigned NOT NULL,
PRIMARY KEY (`cp_id`),
KEY `category_id` (`category_id`),
KEY `post_id` (`post_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=60909 ;

这是一个示例查询。通常需要约 0.60 秒,负载下最高可达 3 秒。

SELECT * 
FROM posts p
INNER JOIN category_post cp ON p.id = cp.post_id
WHERE cp.category_id IN ( 10, 11, 12, 13, 15, 19, 33, 37, 46 )
GROUP BY id
ORDER BY pub_date DESC
LIMIT 25690 , 10

解释: Explain

我读过很多引用文献和 SO 帖子,但对如何去做有点困惑。如果您能在正确的方向上做出任何点头,我将不胜感激!

我发现,如果不包含“ORDER BY pub_date DESC”,查询的执行时间会缩短。但 pub_date 是一个索引。我在某处读到,mysql 每个查询只会使用一个索引。这就是它慢的原因吗?

最佳答案

我发现决策上下文中使用的任何字段(wherejoin)都有一个索引。

我认为您应该将 SELECT * 替换为 SELECT to-be-used-column

因为太多的列会减慢速度。但这不是基本问题。

希望它能给你带来希望。

关于mysql - 我怎样才能让这个mysql查询更有效率呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23918939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com