Mysql “一个”中有多少个值;在;SQL查询中的子句太多?

Mysql “一个”中有多少个值;在;SQL查询中的子句太多?,mysql,Mysql,我有一个SQL查询,它在WHERE子句中使用数组的值: $ids = array ( [0] => 1 [1] => 2 [2] => 5 ) $ids = join(',',$ids); $sql = "SELECT * FROM cats WHERE id IN ($ids)"; 我的问题是多少ID太多了? 它会影响速度吗 谢谢大家显然,在中

我有一个SQL查询,它在WHERE子句中使用数组的值:

 $ids = array 
         ( 
           [0] => 1 
           [1] => 2 
           [2] => 5 
         ) 

 $ids = join(',',$ids);   
 $sql = "SELECT * FROM cats WHERE id IN ($ids)"; 

我的问题是多少ID太多了?
它会影响速度吗


谢谢大家

显然,在中输入的
值越多,它运行的速度就越慢


“多少就是太多”是许多因素的函数。例如,您的数据集大小。或者查询的其余部分是什么样子。

选择的数据越多,所需时间越长,但您主要关心的不应该是选择的ID数量。相反,您应该确保您的id上有一个
索引
,或者它是
主键
。这将使查找速度更快,无论您正在获取多少ID。

想想..如果您必须写5页或10页,则需要更长的时间…如果您有大量ID,则需要更长的时间进行查询是正常的。您应该查看并确保您的数据不会重复,因为这将使查询对不必要的数据花费更长的时间。

Oracle有1000个上限,我以前也达到过。MySQL似乎并不介意。不过,最好的解决方案是不要对如此大的数据集使用IN子句。身份证是从哪里来的?如果来自同一数据库,则查看是否可以使用子查询,而不是基于一个参数(例如userid)进行搜索,以查找链接的ID。这将更加高效,因为MySQL可以在内部使用索引进行连接。

这完全取决于您的表结构和索引。很明显,正如谢尔盖所说的,速度越慢。一般来说,答案是肯定的。但是如果将
中的
顺序
限制
组合在一起,则在大型数据集上会出现问题。如果ID不是来自同一个DB怎么办?示例:从不同的数据库接收一组ID,可能来自NoSQL数据库或其他API?