sql2008数据库,九百万条数据,如何快速查询?

2025-03-23 02:50:37
推荐回答(4个)
回答1:

根据你说的需求:
"可程序中需要查询每行的所有数据"、“查询全部九百万条数据”

-------------------------------
这样的需求跟索引没有关系了(因为已经肯定是走全表扫描的了),要提高效率的办法就是:1、提高硬盘的io速度;2、增加内存以使sql server有更多的缓存。

另外,你程序不要一次性取那么多数据返回,这样会拖死的,建议你考虑变换下处理逻辑(如:分批取回--可以根据id列值进行分批;将数据直接在服务端存成文本再传回本地处理)。

"而是需要根据这些数据逐一进行其他功能的操作,这款程序是不联网的"
--------------------------------
就算这样的话,也不能一次性把9百万数据一次性取回,如果你非要取出来再操作的话,那你得考虑分批去取。或者你把处理逻辑写在存储过程,然后由SQL SERVER本身去完成逻辑处理。总之,不管怎样,你也是得优化你现在的处理逻辑(现有处理逻辑我觉得不合理,效率很低下)。

“真正部署到电力网的服务器上速度会不会提高呢”
------------------------
服务器当然比你本地要快得多啦,硬件配置根本就不同一个级别,但不管怎样,还是建议你参考上面的建议优化你的处理逻辑才行,否则,你系统的效率将很低。

回答2:

首先,检索数据是为了通过检索的结果,得到讯息,如流水记录、对比记录、统计表格。
而,一个表格显示900W条记录,检索人很难从中获取需要的讯息。
所以,实际应用不会一次性检索大量的数据,而是从大量的数据中筛选一部份数据,或是对大量的数据进行统计计算。

决定检索速度的因素有:
1、表格设计对检索的影响:如合理的主键即索引设计。
2、检索语句的效率:如子句的应用、数据的分组、排序、筛选 等等。
3、数据库管理系统的配置:包括硬件配置、软件配置。

回答3:

首先需要知道的是你查询全部记录的目的,然后才能针对目的做修改。
建议根据目的做成一个存储过程或函数,将执行的结果输出处理,不要全部显示,因为输出也是需要消耗大量时间的。
建议将这个表分割一下,根据实际情况,看看能否分割成多张百万记录的表。执行的时候通过多线程进行操作。
因为不知道查询的目的,所以只能泛泛的说说我的想法,具体的优化方案需要具体分析。

回答4:

900万条你撞到datatable里也显示不下,也没有人会用一页看900万条数据,你可以从数据库段就分页显示出来,一次只传1000或多少的,这样速度就不会慢了。你这样900的数据库,不是查询的问题,网络传输程序响应都是需要时间的,只能缩减届国际的大小还缩小时间。
楼主建立索引了,但是是全表扫描其实没有where语句索引是基本排不上用场的,所以还是分页吧。每次取数据都是双top这样既可以用得上索引,又减少了返回数据集的大小。