MySQL的FIND_IN_SET函数因不使用索引而臭名昭著,导致查询效率低下。但是,在处理逗号分隔列表时,还有其他方法可以实现所需的索引行为。
提供的答案中描述的技术建议使用带有参数的准备好的语句接受逗号分隔列表形式的字符串。通过在预备语句中使用带有非 NULL 键的范围类型,可以确保在执行 IN 子句时使用索引。
例如,以下查询使用索引执行范围搜索'id'列:
explain select * from ratings where id in (2331425, 430364, 4557546, 2696638, 4510549, ...)
虽然这种方法可以实现高效的索引查询,但至关重要的是请考虑以下预防措施:
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3