我现在有这是目前被称为多次这样的(伪代码)的SQL查询:微调一些SQL调用多次
foreach(KeyValuePair kvp in someMapList)
{
select col1 from table where col2 = kvp.key and col3 = kvp.value;
//do some processing on the returned value
}
以上能明显调用数据库的大量时间,如果它是一大串双。
谁能想到一个更有效的一块SQL的这基本上可以返回基于两个独特的信息列表上的特定值的列表中,这样的处理可以批量完成的?一个明显的例子是用ORs构建一大块SQL,但这可能效率很低?
由于
卡尔
它可能更低效,使大量调用SQL服务器的再建了很多或公司的查询。只要确保索引是正确的。 – 2010-06-11 14:51:16
一举成功,即使它意味着很多'或'。尽量不要在循环中查询。 – Jay 2010-06-11 14:54:56
我*只是*注意到这个问题上的nhibernate标签。如果您显示的伪代码实际上使用HQL或ICriteria,那么您可以简单地让NHibernate为您制作一个批次:http://nhforge.org/blogs/nhibernate/archive/2008/08/31/the- query-batcher.aspx – Jay 2010-06-11 15:29:41