日期:2014-05-17  浏览次数:20501 次

sql查询优化
表 table 有24个字段,3万条数据,现在我查询该表的所有数据
select * from table order by id
查询时间在1分20秒左右,这个速度还能提升吗?怎么优化,望指教...

------解决方案--------------------
首先你的id要有索引,可以考虑聚集索引
然后。。就没有然后了。。
你24个字段值都是需要的吗?难道就没有其他筛选条件了吗
你这一个*出来,估计也没什么好优化的了
------解决方案--------------------
在ID列加聚集索引,且按升序来排序,这样你的语句已经到极限了,表扫描,还有*号,没啥可优化的了。
------解决方案--------------------
如果你只select id from table order by id要用多久?

------解决方案--------------------
提升硬件吧...
------解决方案--------------------
引用:
表 table 有24个字段,3万条数据,现在我查询该表的所有数据
select * from table order by id
查询时间在1分20秒左右,这个速度还能提升吗?怎么优化,望指教...


刚从SQL语句分析,是没什么提升的地方。
当然可以从业务需求方面去考虑,如采用分页显示。

------解决方案--------------------
select * 的话,没啥可优化的,lz看看硬件是否可以升升级...

------解决方案--------------------
3万条记录,你重建索引,速度就正常了。
1.重建数据库索引

SqlServer2005 重建索引 
随着数据的数据量的急剧增加,数据库的性能也会明显的有些缓慢
这个时候你可以考虑下重建索引或是重新组织索引了。
 通过
Sql代码  
1.DBCC SHOWCONTIG('表名')  
DBCC SHOWCONTIG('表名') 可以查看当前表的索引碎片情况,出来的结果大概如下:
  
DBCC SHOWCONTIG 正在扫描 'tblWFProcessRelatedDataInstanceHistory' 表...

表: 'tblWFProcessRelatedDataInstanceHistory' (933630419);索引 ID: 1,数据库 ID: 8

已执行 TABLE 级别的扫描。

- 扫描页数................................: 727

- 扫描区数..............................: 96

- 区切换次数..............................: 95

- 每个区的平均页数........................: 7.6

- 扫描密度 [最佳计数:实际计数].......: 94.79% [91:96]

- 逻辑扫描碎片 ..................: 3.16%

- 区扫描碎片 ..................: 76.04%

- 每页的平均可用字节数........................: 143.6

- 平均页密度(满).....................: 98.23%

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

其中有些很重要的指标,如扫描密度、扫描碎片等。

最佳计数与实际计数相当时说明索引是比较好的,如相差太多,就必须可以重新建或组织索引。

重建索引命令:

指定表名
------解决方案--------------------
有*号..3万条,算就是这样了.ID索引咯..
------解决方案--------------------
引用:
3万条记录,你重建索引,速度就正常了。
1.重建数据库索引

SqlServer2005 重建索引 
随着数据的数据量的急剧增加,数据库的性能也会明显的有些缓慢
这个时候你可以考虑下重建索引或是重新组织索引了。
 通过
Sql代码  
1.DBCC SHOWCONTIG('表名')  
DBCC SHOWCONTIG('表名') 可以查看当前表的索引碎片……


這個也許會有用,我之前也有遇到過這種情況.也是重建索引用就可以了.


------解决方案--------------------
楼主的问题,不是计算机配置问题,就是索引问题,3万条记录对SQL来说根本不算什么,连小菜都算不上
------解决方案--------------------
你把字段都打出来,别用*,速度可能会快点
------解决方案--------------------
我觉得应该是列太宽了
------解决方案--------------------
我51个字段65314条数据只用了13秒,你的太慢了吧,且存在两个字段是1000位的,很多100位,你重新做一次索引试试,字段尽量少点,还要注意下字段类型。