"in" 子句中有多少个值在 SQL 查询中太多?



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

 $ids = array 
         ( 
           [0] => 1 
           [1] => 2 
           [2] => 5 
         ) 
 $ids = join(',',$ids);   
 $sql = "SELECT * FROM cats WHERE id IN ($ids)"; 


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

谢谢所有的

Oracle有1000个限制,我以前碰到过。MySQL似乎并不介意。不过,最好的解决方案是不要对这么大的数据集使用IN子句。id从何而来?如果来自相同的数据库,那么看看是否可以使用基于一个参数(例如userid)搜索的子查询来查找链接的id。这将大大提高效率,因为MySQL可以使用索引在内部执行连接。

选择的数据越多,耗时越长,但是您主要关心的不应该是选择的id的数量。相反,您应该确保您的id上有一个INDEX,或者它是PRIMARY KEY。无论抓取多少个id,这都将使查找速度更快。

IN中输入的值越多,它的运行速度就越慢。

"多少是太多"是许多因素的函数。例如,您的数据集大小。

想想看,如果你要写5页或10页,哪一页花的时间更长?如果您有大量的id,则查询需要更长的时间,这是正常的。您应该查看并确保您的数据没有重复,因为这会使查询花费更长的时间来查找不必要的数据。

最新更新