用order by本來就是速度變慢的,而且你的數據量太大了,所以我覺得你的表中應該要用到的字段才列出來,不應該用*來代替

解决方案 »

  1.   

    to 海洋空间:
    我只选择其中的PK字段就可以了,没有用*to陈良灯:
    具体点,不明白。
      

  2.   

    首先要在数据表中 建立 自动递增的 长整数字段 NID  并设置索引
    查询时 编写一个 过程 传递 需要选取的记录个数 如1000
    1.产生 1 个随机数 RND 范围 从 1 - 数据表的记录总数并不重复
    2.select * into 新表 from 源表 Where NID=随机数
    循环以上过程直到到达所需 记录数
    3.select * from 新表  就是所需的随机记录提升效率的关键:避免在全表中作排序操作
      

  3.   

    1. order by 耗时
    2. newid() 也耗时所以加起来速度就当然慢了
      

  4.   

    用 zlt982001(zhangle) 说的随机数是一个不错的办法,这样不需要排序
    只是随机性差一点
      

  5.   

    zlt982001(zhangle)的办法是提高了速度,但需要新增一个字段,
    楼主能不能把表结构贴出来,看看有没有什么其他办法
      

  6.   

    order by newID()
    其实会先生成个中间表,再从中间表里面读取数据返回结果~~~这样的话,表记录很大时,就不适宜用 order by newid()了
      

  7.   

    你表有标识列ID,可以结合rand函数来实行列ID取随机记录