如何优化select col1,col2.... from table 的速度?我查询30万条数据返回结果大概用了10秒,怎么优化?查询结果如下:客户端执行时间 17:38:24
查询配置文件统计信息
  INSERT、DELETE 和 UPDATE 语句的数目 0 0.0000
  INSERT、DELETE 或 UPDATE 语句影响的行数 0 0.0000
  SELECT 语句的数目  1 1.0000
  SELECT 语句返回的行数 311296 311296.0000
  事务数  0 0.0000
网络统计信息
  服务器往返的次数 1 1.0000
  从客户端发送的 TDS 数据包 1 1.0000
  从服务器接收的 TDS 数据包 9732 9732.0000
  从客户端发送的字节数 96 96.0000
  从服务器接收的字节数 3.985851E+07 39858510.0000
时间统计信息
  客户端处理时间 4905 4905.0000
  总执行时间 4905 4905.0000
  服务器应答等待时间 0 0.0000

解决方案 »

  1.   

    没加where语句,用索引对速度提升应该没什么用吧
    这些时间绝大部分用在遍历整个表上的。
      

  2.   

    已经在主键col1 上有索引ALTER TABLE [dbo].[BusiStat] ADD  CONSTRAINT [PK__BusiStat__1A89E4E1] PRIMARY KEY CLUSTERED 
    (
    [StatNum] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]没有where 条件上的限制
      

  3.   

    这个语句没有什么地方可以从软方面优化了我认为.因非就是一个单纯的字段选取.时间消耗主要看记录数量和选取字段的多少.由于没有where条件限制,并且字段又不能减少,所以没有什么可优化的了.
      

  4.   

    除了减少select的字段,还真的没办法软优化=。=真要优化就把机器配置弄上去
      

  5.   

    没有办法优化了,要么加硬件配置,要么加where条件。
      

  6.   

    变态的SQL。语句本身无法优化了。如果你内存够大,就一次加载到内存,以后直接从内存取