MySQL 的 FIND_IN_SET 函数因不使用索引而臭名昭著,导致查询效率低下。但是,在处理逗号分隔列表时,还有其他方法可以实现所需的索引行为。
所提供的答案中描述的技术建议使用带有参数的准备好的语句接受逗号分隔列表形式的字符串。通过在预备语句中使用带有非 NULL 键的范围类型,可以确保在执行 IN 子句时使用索引。
例如,以下查询使用索引执行范围搜索'id' 列:
explain select * from ratings where id in (2331425, 430364, 4557546, 2696638, 4510549, ...)
虽然这种方法可以实现高效的索引查询,但考虑以下预防措施至关重要:
以上是如何让MySQL的FIND_IN_SET函数使用索引?的详细内容。更多信息请关注PHP中文网其他相关文章!