我有一个SQL查询,它在WHERE子句中使用数组的值:
$ids = array
(
[0] => 1
[1] => 2
[2] => 5
)
$ids = join(',',$ids);
$sql = "SELECT * FROM cats WHERE id IN ($ids)";
Run Code Online (Sandbox Code Playgroud)
我的问题是有多少ID太多了?
它会影响速度吗?
谢谢大家
Oracle的限制为1000,这是我之前遇到的.MySQL似乎并不介意.最好的解决方案是不要为那个大的数据集使用IN子句.ID来自何处?如果来自同一个DB,那么看看你是否可以使用子查询来搜索基于一个参数,例如userid来查找链接的id.这将更有效,因为MySQL可以使用索引在内部进行连接.
您选择的数据越多,所需的时间就越长,但您主要关心的不应该是您选择的 id 数量。相反,您应该确保您的 id 上有一个INDEX或它是PRIMARY KEY. 无论您抓取多少个 ID,这都会使查找速度更快。