SQLSERVER的问题(100分)

  • 主题发起人 主题发起人 okmwq
  • 开始时间 开始时间
O

okmwq

Unregistered / Unconfirmed
GUEST, unregistred user!

如果我用TQUERY TO SELECT + NOLOCK LOOK ALL RECORDS
可以解决死锁,但更新和look all RECORDS时 ,if
该表的记录有几十万时 you must wait for hours
我做过测试
用 ttable 则快多了因为它每次移动时只取回几个记录
如果从top to last only need 几秒
if is tquery, oh my gods, you can play redalert for wait for it
用ttable但不死锁可以吗 或 用TQUERY TO SELECT + NOLOCK LOOK ALL RECORDS时能像table那样它每次移动时只取回几个记录
 
干吗这么麻烦?
如果你只需要看几条记录在Query中加上Where语句不好吗?说实在的,当数据量
到一定程度时,无论是Table还是Query你都会受不了的,只能分段来取,用query
要加Where,用table要使用SetRange;
更新数据最好用Update语句!
 
使用SQL SERVER 7
支持 select * top 50 from dbo.tbl
返回符合条件的50条记录
另外, 如果你使用了NOLOCK选项,QUERY本身就是不加锁的脏读,完全没必要再去
FETCH ALL 所有记录。
如果你没有使用NOLOCK,要立刻解除锁的话,确实需要 FETCH ALL或类似方法

BTW: TABLE 在访问 SQL 数据库时相等于 QUERY + ‘SELECT * FROM ATABLE’
语句, 只所以你看到TABLE的速度快于QUERY,与TABLE还是使用了锁,而且
你用SQL MONITOR监视的话,会发现TABLE其实只取了 部分记录回来,所以
速度快,而这种行为 同样存在与 QUERY + NOLOCK 方法
所以推荐你用 QUERY + NOLOCK就可以了
 
1、提问者多看待答问题再提问;
2、把题目放在适当的版面;
3、王坏人的这贴膏药看过2、3遍了:-)
 
多人接受答案了。
 
后退
顶部