建议的选项是:
- 准备
SELECt my_column FROM my_table WHERe search_column = ?
,对每个值执行它,并在客户端对结果进行UNIOn。只需要一个准备好的语句。缓慢而痛苦。 - 准备
SELECt my_column FROM my_table WHERe search_column IN (?,?,?)
并执行它。每个IN-LIST大小需要一个准备好的语句。快速而明显。 - 准备
SELECt my_column FROM my_table WHERe search_column = ? ; SELECt my_column FROM my_table WHERe search_column = ? ;
…并执行它。[或UNIOn ALL代替那些分号。–ed]每个IN-LIST大小需要一个准备好的语句。愚蠢的慢,严格比差WHERe search_column IN (?,?,?)
,所以我不知道为什么博主甚至建议这样做。 - 使用存储过程来构造结果集。
- 准备N个不同的IN列表大小查询;例如,具有2、10和50个值。要搜索具有6个不同值的IN列表,请填充size-10查询,使其看起来像
SELECt my_column FROM my_table WHERe search_column IN (1,2,3,4,5,6,6,6,6,6)
。任何运行良好的服务器都将在运行查询之前优化出重复值。



