优化大量的查询

问题描述:

我有一个向上3,000个十进制值的列表,每个我需要从SQL Server数据库中查找另一个十进制值。目前我正在使用.Net SqlClient类。
制作3,000个查询似乎效率不高,但我不确定是否有一种将查询合并到少数几个调用中的高效方法。优化大量的查询

查找表目前包含150万左右的价值观和我不希望从除数据库实际需要进行查找(所以我不能在内存中缓存等整个表)检索任何值。

什么是这样做的最佳方式?

如果您使用SQL Server 2008中,你可以通过在表值参数到您的查询 - 通过在值的表,然后以在查询中加入上。与替代方法进行性能比较的示例(CSV & XML):http://www.adathedev.co.uk/2010/02/sql-server-2008-table-valued-parameters.html

我会看到如何执行并从那里执行。

如果你不使用SQL Server 2008,你可以尝试在那篇文章中比较的另一种方法(XML和CSV) - 在*上有很多关于“如何将多个值传递给存储过程”的讨论。或者,将十进制值批量加载到临时表中,然后加入。

+0

谢谢你,非常翔实的答案。 – 2010-07-22 08:25:00

SQL Server 2008中引入table value parameters。您可以将它们作为用户类型参数define,并将它们传递给存储过程和UDF(UDF需要只读)。

你可以写一个存储过程,需要小数的表,不查找并返回你所需要的数据,都在一个查询。

如果值不经常改变,使的AppFabric分布式缓存bevore它。 这将是加速它的最佳方式。在我看来,将逻辑转移到存储过程通常不是可伸缩性的最佳方式。