我的语句是:select top 1 * from mytable where classname='001' ordey by newid()
我使用循环语句,每次只选择一条满足条件的随机数据,发现机器都快死机了,速度相当慢,害得我重复启动计算机好几次了,也不知道是我的语句有问题,还是机器有问题,哪位大虾能不能介绍一些newid()的详细的使用,适合在什么场合使用?

解决方案 »

  1.   

    每次都Order by 不死才怪呢
      

  2.   

    NEWID
    创建 uniqueidentifier 类型的唯一值。 语法
    NEWID ( )返回类型
    uniqueidentifier
      

  3.   

    QQMagicer(在IT的路上越走越远) 
    那我应该如何操作?
      

  4.   

    QQMagicer(在IT的路上越走越远) 
    但是我只选择随机的符合条件的一条记录呀,我必须这样,有没有更好的解决办法?
      

  5.   

    数据表中总记录只有2000条呀,为什么会这样,难道就没有办法解决了吗,随机选择其中的一条记录,我必须得使用这样的方法,既然不能使用newid(),那我应该如何来解决这个问题!
      

  6.   

    你这个思路是错的,不妨把需要解决的问题说出来. 这样newid是所有数据的,当然要慢
      

  7.   

    newid用一次还行,要是循环那还受得了...
      

  8.   

    gg,你这么写吧
    select top 1 *,newid() as Random from mytable where classname='001' ordey by Random 你别看这一个小小的改动,效率和你的是不一样的,我已经测试过了,如果是你的写法,1000条数据,大约要3秒,但是换成这种写法以后,和select top 1 几乎没有区别
      

  9.   

    把所有的ID出取然后用随机函数取出其中一个,然后用这个随机取到的ID去数据库里再取出记录如果第次用随机排序来取第一个,这个代价有点太大了.
      

  10.   

    select top 1 *,newid() as Random from mytable where classname='001' ordey by Random 
    //你换成这种试了吗?
      

  11.   

    select * from mytable where id=(select top 1 id  from mytable   order by newid() )
      

  12.   

    我已使用了你的方法:QQMagicer(在IT的路上越走越远)
    但是还是慢呀!