Tsql 什么';基于值列表查询数据库的最有效方法是什么?
我有一个要从Sql Server检索的记录Id列表。我想知道做这件事最有效的方法是什么。例如,在代码中,我有:Tsql 什么';基于值列表查询数据库的最有效方法是什么?,tsql,sql-server-2008,Tsql,Sql Server 2008,我有一个要从Sql Server检索的记录Id列表。我想知道做这件事最有效的方法是什么。例如,在代码中,我有: var recordsToFind = new List<long>{ 12345, 12346, 45756, 42423 ... } 我知道有几个选项,比如,表值参数,将列表转换为逗号分隔的字符串,使用CharIndex,创建临时表和拆分字符串等等 记住这一点,最好的方法是什么?这将被大量使用 谢谢 关于这方面的几篇必读文章可以在这里找到:这些文章介绍了性能注意事项。
var recordsToFind = new List<long>{ 12345, 12346, 45756, 42423 ... }
我知道有几个选项,比如,表值参数,将列表转换为逗号分隔的字符串,使用CharIndex,创建临时表和拆分字符串等等
记住这一点,最好的方法是什么?这将被大量使用
谢谢 关于这方面的几篇必读文章可以在这里找到:这些文章介绍了性能注意事项。关于这方面的几篇必读文章可以在这里找到:这些文章介绍了性能注意事项。Micah 是否不可能只执行简单的sql“in()”函数??(显然,您的数组被用作参数,而不是硬编码的值) 也许我误解了这个问题(请注意:) [edit]-我注意到这是在.net中使用的。有可能对数据库使用linq吗??如果是这样的话,那么一些精心设计的linq(例如超EF或亚音速)方法可能会奏效。例如:
var idlist = new int[] { 12345, 12346, 45756, 42423 };
var puzzleids = Puzzles.Where(x =>
idlist.Contains(x.ID));
弥迦
是否不可能只执行简单的sql“in()”函数??(显然,您的数组被用作参数,而不是硬编码的值)
也许我误解了这个问题(请注意:)
[edit]-我注意到这是在.net中使用的。有可能对数据库使用linq吗??如果是这样的话,那么一些精心设计的linq(例如超EF或亚音速)方法可能会奏效。例如:
var idlist = new int[] { 12345, 12346, 45756, 42423 };
var puzzleids = Puzzles.Where(x =>
idlist.Contains(x.ID));
您是否有能力更改代码和存储过程,或者您是否受到某种限制?如果您有能力同时改变这两种情况,我以前见过这样做:
//Convert array/list to a comma delimited string using your own function (We'll call string strFilter)
//Pass strFilter into stored procedure (varchar(1000) maybe, we'll call parameter @SQLFILTER)
DECLARE @SQL AS VARCHAR(2000) --Or VARCHAR(MAX)
SET @SQL = "SELECT * FROM PUZZLES WHERE ID IN (" + @SQLFILTER + ")"
EXEC (@SQL)
如果我的语法不正确,我道歉。不幸的是,我的工作使用的是Oracle,而我已经8个月没有经常使用SQL Server了。希望这有帮助。您是否有能力更改代码和存储过程,或者您是否受到限制?如果您有能力同时改变这两种情况,我以前见过这样做:
//Convert array/list to a comma delimited string using your own function (We'll call string strFilter)
//Pass strFilter into stored procedure (varchar(1000) maybe, we'll call parameter @SQLFILTER)
DECLARE @SQL AS VARCHAR(2000) --Or VARCHAR(MAX)
SET @SQL = "SELECT * FROM PUZZLES WHERE ID IN (" + @SQLFILTER + ")"
EXEC (@SQL)
如果我的语法不正确,我道歉。不幸的是,我的工作使用的是Oracle,而我已经8个月没有经常使用SQL Server了。希望这有帮助。+1获取链接。该网站包含几篇关于sql server的非常有趣的文章。该网站包含几篇关于sql server的非常有趣的文章。我需要传入代码中的值列表。它们不是硬编码的,我也不是在执行我需要从代码中传入值列表的直接sql(或动态sql)。它们不是硬编码的,我也不是在执行直接sql(或动态sql)