在T-SQL中循环查询的最快方法是什么? 1)游标或 2)添加密钥的临时表或 其他任何东西。通过SQL查询循环的最快方法
0
A
回答
0
我不认为你需要一个游标(你对concat的评论),如果我明白你要去的是什么。 这是我的一个抓取联系人的所有电话号码,并将它们放在一个字段中并将其返回。
DECLARE @numbers VARCHAR(255)
SELECT @numbers = COALESCE(@numbers + ' | ','') + PHONE_NUMB FROM my_table (NOLOCK)
WHERE [email protected]_id RETURN @numbers
1
0
游标通常是资源霸王,特别是随着您的表大小的增长。所以如果你的表格尺寸很小,我会推荐一个游标,但是,更大的表格可能会更好用外部或临时表格。
5
通过查询“循环”的最快方法是不做。在SQL中,你应该考虑基于集合而不是基于循环的。你应该评估你的查询,询问为什么你需要循环,并寻找方法来做到这一点。
即便如此,在光标上使用FAST_FORWARD选项将有助于加快速度。
0
你想通过存储过程或从C#代码循环查询输出吗?
一般来说,您应该避免一次循环查询输出一行。 SQL意味着基于集合的操作,因此请参阅您是否可以使用基于集合的方法解决您的问题。
0
取决于结果集的大小 - 表变量在内存中,不需要读取磁盘,可以像处理表一样处理(设置操作),并且速度非常快,直到结果集变大为内存(然后需要交换文件写入)。
3
对于你所说的目标,这样的事实上是一个更好的选择 - 完全避免了“循环”问题。
declare @table table
(
ID int
)
insert into @table select 1 union select 2 union select 3 union select 4 union select 5
declare @concat varchar(256)
-- Add comma if it is not the first item in the list
select @concat = isnull(@concat + ', ', '') + ltrim(rtrim(str(ID))) from @table order by ID desc
-- or do whatever you want with the concatenated value now...
print @concat
0
这里有一个快捷方式,从返回的行数的查询得到一个逗号分隔的单场串。与游标等替代品相比,相当快,它可以是子查询的一部分(即获得一些东西,并在一列中列出与其他表中的每个东西相关的所有事物的ID):
SELECT
COALESCE(
REPLACE(
REPLACE(
REPLACE(
(SELECT MyField AS 'c' FROM [mytable] FOR XML PATH('')),'</c><c>',','),
'<c>',''),
'</c>',''),
'')
AS MyFieldCSV
警告:如果您的列包含FOR XML PATH将逃脱的字符,它将无法正常播放。
0
光标不好避免光标,使用while循环来代替光标 临时表中添加了关键是使用循环的最佳方式。
我必须操纵表中的1000000多行,因为复杂的逻辑,光标需要2分钟的 。 但是,当将光标转换为while循环时,仅需要25秒25秒。所以这在性能上有很大的不同。
相关问题
- 1. 通过SQL表循环并执行多个查询的最快方法
- 2. SQL查询循环通过
- 3. Php - 通过关联数组键循环的最快方法
- 4. 循环通过Linq查询
- 5. 通过hbase中的行键查询值的最快方法
- 6. 退出TParallel.For循环的最快方法?
- 7. 如何通过SQL循环查找最近的最大日期?
- 8. 通过数组循环的最快方式
- 9. 循环通过getElementsByClassName方法
- 10. 通过SQL数据库列对Excel列循环最快的方式 - C#
- 11. 速度快:查询语法与循环
- 12. 加快查询内循环?
- 13. 什么是更快?在循环中触发查询或循环通过数组?
- 14. 循环中的SQL查询循环中
- 15. 什么是最有效和最快的方式?存储在分贝和获取查询或通过for循环?
- 16. 通过图像循环的更快方法
- 17. 查询数据帧的最快方法
- 18. C#查询excel最快的方法
- 19. 带循环的SQL查询
- 20. 忽略foreach循环通过MySQL查询
- 21. 通过查询结果循环
- 22. 通过注释查询循环
- 23. 加载循环查询的好方法
- 24. 哪个是运行此SQL查询最快的方法?
- 25. 通过循环变量对循环或SQL查询进行排序变量
- 26. 循环通过entityreference的正确方法?
- 27. SQL查询,通过从同一列多个值循环为
- 28. 我想通过增强for循环动态值在SQL查询?
- 29. 如何通过文件制作SQL Server查询循环?
- 30. SQL LINQ查询不断循环通过两个表
你想完成什么? – 2009-07-01 19:58:10
我从查询中获取一些数据,并希望循环通过第一个到最后一个项目,并在结果集中执行字段的字符串连接。 – Greens 2009-07-01 20:03:27
基本经验法则:尽可能避免游标 - 它们已经死了 - 缓慢,笨拙,并且不适合T-SQL。使用基于集合的方法 - 将其加载到临时表中并在其上运行UPDATE语句。 – 2009-07-01 20:40:57