mysql的多对多关联查询很慢,请教原因及解决办法
Mysql 5.7.26
PHP 7.4
PostCategory 分类表 有两条分类信息:id为1和2
中间表
id为1 有15万左右的关联信息
id为2 有8万左右的关联信息
posts 文章表
有二十万左右的文章
PostCategory::query()->where('id', 1)
->with(['posts' => function ($query) {
$query->where(['post_status' => 'publish', 'post_type' => 'post'])
->latest('post_date')
->limit(10);
}])->first();
文章表加了索引 post_status, post_type, post_date,中间表也有索引
分类表查询id为1的时候速度很快,100毫秒左右,当查询id为2就会很慢,查询时间在7秒左右
请问是什么原因呀
知道问题怎么出现的了,
查询后要post_date(最新时间)排序
文章有22万,最后的三万文章都属于id为1的分类,属于分类id为2的最新文章从文章id为19万的时候才出现
当我把最新的三万文章的分类id为1的文章关联改成分类2后,分类id为1的查询速度就变慢了,分类id为2的查询速度快的飞起
目前只知道出现的原因,但是不知道为什么出现
推荐文章: