我需要写一个查询来检索一个大的ID列表.
我们确实支持许多后端(MySQL、Firebird、SQLServer、Oracle、PostgreSQL…)我需要写一个标准的SQL.
id集的大小可能很大,查询将以编程方式生成.那么,最好的方法是什么?
1) 使用IN编写查询
SELECT * FROM TABLE WHERE ID IN (id1, id2, ..., idn)
我的问题是.如果n非常大会发生什么?还有,性能呢?
2) 使用或编写查询
SELECT * FROM TABLE WHERE ID = id1 OR ID = id2 OR ... OR ID = idn
我认为这种方法没有n限制,但是如果n非常大,性能如何?
3) 编写编程解决方案:
foreach (var id in myIdList)
{
var item = GetItemByQuery("SELECT * FROM TABLE WHERE ID = " + id);
myObjectList.Add(item);
}
当通过网络查询数据库服务器时,这种方法遇到了一些问题.通常情况下,执行一个检索所有结果的查询比执行大量小查询更好.也许我错了.
这个问题的正确解决方案是什么?