一个表,有很多用户在查询其中的记录,如果同时另外有很多用户在更新其中的记录,会影响查询记录的性能吗?
比如表A:
infoid(int)  info(nvarchar) sliang(int)
    1         xxxxxxxa      100000
    2         sddddddd      5000
    3         sdddfeeaa     0一些用户在查询sliang>0的所有记录,如果同时另一些用户在更新记录中的sliang字段,会彼此互相影响查询和更新的性能吗?如果要影响的话,把一个表改成两个表(将需要频繁更新的sliang字段另建一个表):
表A:infoid(int)  info(nvarchar)  visible(bit)
     1            xxxxxxxa               1
     2            sddddddd               1
     3            sdddfeeaa              0
表B: infoid(int)  sliang
     1            100000
     2            5000
     3            0
即将需要频繁更新的sliang字段另建一个表,查询用户根据visible字段是否为1查询A表中的记录;需要更新sliang的用户更新B表的sliang字段,当B表的sliang=0时再更新A表的visible字段为0(禁止查询)。
请问有必要吗??????

解决方案 »

  1.   

    当然会影响性能,频繁更新会锁定表,select就得排队,除非用with nolock,但这样会读脏数据
      

  2.   

    select *from tb (with nolock) 不过会读脏数据
      

  3.   

    Msg 156, Level 15, State 1, Line 1
    Incorrect syntax near the keyword 'with'.
      

  4.   

    select *from tb with (nolock)更新锁是排他的,不能和任何锁共存的 (NOLOCK是不锁,试试吧)