如果MySQL中IN
子句的值列表具有重复的值并且未排序,则会影响查询性能。
例如
SELECT * FROM `t1` WHERE `id` IN (2,2,3,1,1);
V/S
SELECT * FROM `t1` WHERE `id` IN (1,2,3);
MySQL
将摆脱不同的值并在优化阶段对它们进行排序。
这将略微影响性能,但对于大多数实际查询,您不会注意到任何差异(它是毫秒的数量级)。
当您
使用诸如以下内容的查询时,您需要担心这一点:
SELECT * FROM `t1` WHERE `id` IN (SELECT `id` FROM `t2`);
并且 t2
中的重新排序行数大于 1000!