我现在数据库大概在4g左右.数据量在200w条.做了全文检索.但是在全文检索过程中需要知道按照条件查询的记录总数,但是每次都在30s左右.我想能不能把速度给搞快一点希望各位大虾回答.
我用的select count(*) from table where ....

解决方案 »

  1.   

    就这个方法.
    select count(*) from table where 把某些你认为需要的字段加个索引
    提高硬件质量
      

  2.   

    select count(*) from table where ....
    建议把*号换成具体的列名
      

  3.   

    ls的对表操作@@rowcount返回的是0吧
      

  4.   

    Select    rows  from  sysindexes  where  id=object_id(N'tablename')  and    indid<2
    该方法获取表的记录总数的速度非常快,在毫秒级就可以完成,相比select count(*) 要快上数万倍,但是
    大家在运用该方法是一定要主要,该方法得到的表的总记录数不是一个精确值,原因是MS SQL 并不是实时更
    新该字段的值,而是定时更新,当从实践来看该值和精确值一般误差不大,如果你希望快速的粗略估算表的
    大小,建议你采用该方法。如果你希望得到精确值,那么请在执行上述语句前执行
    DBCC UPDATEUSAGE(DatabaseName,[TABLENAME]) WITH ROW_COUNTS 
    强制更新该字段的值,但这样第一次更新
    时会耗费大量的时间,这样做的效果和建有聚簇索引的表 select count (*) 效果相差不大,所以如果你希
    望相对快速地得到精确的表的记录总数,那么你有两种选择,建聚簇索引或者先DBCC 再使用上述方法。
    sysindexs负责管理索引,object_id(object)返回对象ID,indid索引ID
      

  5.   

    ls的不对表操作的话@@rowcount返回的是0吧,@@rowcount返回的是上次对表操作的总行数
      

  6.   

    select count(col1) from table where 
    *比较慢
      

  7.   

    这里有个SQLSERVER海量数据库的查询优化及分页算法 你可以去看看 写的比较全面!
    http://blog.csdn.net/great_domino/archive/2005/02/01/275839.aspx
      

  8.   

    david_anwei 你好,主要是不能附加条件呀.我是想在附加条件的时候是多少条记录,而不是看该表中有多少条记录,
      

  9.   

    select count(1) from table where
      

  10.   

    select count(*) from table ...........................
      

  11.   

    select count(1) from table where
      

  12.   

    select count(索引列) from table where
      

  13.   

    select rows from sysindexes where id = object_id('TableName') and indid in (0,1)
    最快。
    但是不保证绝对准确select count(1)
    select count(*)
    select count(主键)
    select count(索引列)
    都差不多,个人喜欢用count(1)
      

  14.   

    你都做了查询了,还用什么select count(*) ....啊
    直接用@@rowcount不就行了
      

  15.   

    专业的搜索引擎技术提供商(磐志搜索),访问www.panzhi.net了解详细介绍。第一,提高搜索速度,0.005秒;
    第二、提高搜索准确性,专业的中文分词;  
    第三,智能分析关键词,纠错,相关词提取等;  
    第四、方法搜索 关键词的关系(与 或 非)等;
      

  16.   

    select count(1) from table where
    支持这个
      

  17.   

    算一个约值就不行吗?
    不行用CONTAINSTABLE来查询,不管怎么样,至少只需要执行一次查询了。
      

  18.   

    速度上来说,从快到慢,大概是这样排列的:
    count(索引列)
    count(1)
    count(普通列)
    count(*)
      

  19.   

    如果表中有聚集索引
    count(索引列)
    count(1)
    count(普通列)
    count(*)
    完全是一模一样的