数据量很大,为了达到高效的检索速度,我选择了select top x fd1,fd2 from tb where ...
但是我又想的到所有符合条件的记录,我想加上Count(*),这样一来速度大大降低,怎么办?

解决方案 »

  1.   

    create table A
    (
       fd1 int,
       fd2 int
    )insert A select 1,2
    insert A select 2,1
    insert A select 3,1
    insert A select 4,3
    insert A select 5,4
    insert A select 6,4
    insert A select 7,2select fd1,fd2, count(*) as num from
    (select top  1 WiTh Ties *  from A order by fd2 DESC) T
    group by fd1,fd2
      

  2.   

    不错,使用子查询可以实现,不知道楼主在这里所要的count(*),是指的全部还是仅显示出来的记录总和
      

  3.   

    我要加的Count(*)是所有满足条件的记录数据。比如我有一张500万记录的表,我用全文索引,我想要速度又想要取出所有符合条件的记录数。
      

  4.   

    可不可以用[不相关子查询]将符合条件的记录选择出来然后在外层进行Count(*)呢,理论上这样应该大大提高速度的,尤其是当你在子查询中写出很漂亮的查询条件时:D