子查询用in导致全表扫描
SELECT
`id`,
`intro`,
`skin_type`,
`kol_label`,
`city`,
`fans_total`,
`home_page_link`,
`opened_star`,
`opened_window`,
`bs_case`,
`current_quote`,
`account_id`,
`is_partner`,
`opened_cart`,
`platform_code`,
`artist_id`,
created_at
FROM
publication_items
WHERE
id IN (
SELECT
MAX( id )
FROM
`publication_items`
WHERE
`artist_id` IN ( 'artzf1bl6qo8wmckumwrybed5eab0a71', 'artzf1beelslri3ygivucbee16ae72ca' )
AND `year` = '2022'
AND `month` <= '11'
GROUP BY
platform_code,
artist_id
ORDER BY
`year` DESC,
`month` DESC
)
explain 结果
索引全失效,有无优化方法?
本作品采用《CC 协议》,转载必须注明作者和本文链接
zhuanlan.zhihu.com/p/58291123 看下mysql执行流程,mysql子查询返回结果集是未知的。
你的索引是啥呢?
另外,这个代码有啥用吗?
MAX( id ) 你还想让他走索引