mysql 如何在 IN 子句中选择多个值

问题描述 投票:0回答:1

对于像

select * from table where fieldA in (...)
这样的sql,如果括号里有很多值(比如1000个值),并且fieldA上有一个B树索引。 mysql如何执行这个sql。

它是否像

foreach(value in values) {select * from table where fieldA=value}
一样工作,或者它有更好的方法来做到这一点

在这个问题中SQL IN 是否对性能有害?。它只是说 IN 谓词被翻译成 OR 谓词。它没有告诉我执行计划是什么。

mysql
1个回答
0
投票

这取决于表格的大小和其中的值。通常当所选值的数量相当接近表的大小或值的数量非常多时,这可能是“全表扫描”。或者可以使用索引。这实际上取决于表中的生产数据。

© www.soinside.com 2019 - 2024. All rights reserved.