首页 新闻 会员 周边

sql server 游标中 select语句是查找所有数据到内存中还是读一条取一条?

0
悬赏园豆:5 [已解决问题] 解决于 2014-07-27 22:42
declare mycursor cursor 
local static read_only forward_only
for
SELECT p.Id,p.parno,pc.ClassName,pv.attr10,pv.attr11,pv.attr4 FROM dbo.Pro_View
OPEN mycursor
FETCH NEXT from mycursor into 
WHILE @@FETCH_STATUS = 0
BEGIN

FETCH NEXT from mycursor into @id,@parno,@classname,@attr10,@attr11,@attr4
END
CLOSE mycursor

 

 

上面红色语句是把所有的数据都取出来当内存中还是在执行

FETCH NEXT from mycursor into 的时候再从数据库中取出来??
koi的主页 koi | 初学一级 | 园豆:4
提问于:2014-06-24 15:41
< >
分享
最佳答案
0

应该是根据SQL Server本身的可用内存和CPU负载决定是否一次加到内存。

收获园豆:5
邀月 | 高人七级 |园豆:25475 | 2014-06-24 16:01
其他回答(4)
0

楼主比较用功,连这个都研究。我不知道,不过瞎说不犯法吧。

假设微软写SQL SERVER的人不是傻子的话,应该不会将所有数据读到内存里面。

你能想象如果TABLE中有1000亿条数据的情况吗?

 

发现有人先我发言了,回答比较外交口语化,也确实比较智能。

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-06-24 16:03
0

SQL Server 有个设置:每次查询占用的最小内存,默认为 1024KB;

Launcher | 园豆:45045 (高人七级) | 2014-06-24 16:12
0

想想如果查找的内容很多,内存放不下了,是不是就不能查找了?

Albert Fei | 园豆:2102 (老鸟四级) | 2014-07-07 10:57
0

游标中select查询是读一条取一条,虽然比较慢,但是也有他的好处,比如,不会把服务器卡死

| 园豆:332 (菜鸟二级) | 2014-07-23 15:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册