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

各位大大帮忙解决一下把~~~只做查询,而且是select*查询全部九百万条数据,每3天就要执行一次,1.存储过程的话用时3分钟,2.索引我放到ID上了,用时1分零六秒(只... 各位大大帮忙解决一下把~~~

只做查询,而且是select * 查询全部九百万条数据,每3天就要执行一次,
1.存储过程的话用时3分钟,
2.索引我放到ID上了,用时1分零六秒(只查询ID),可程序中需要查询每行的所有数据(共4列)。新建索引了,但不太会用。。
3.用“select 列1,列2,列3,列4,from 表1” 的方法用时4分钟.....
4.在程序中需要将查询的结果放进datatable里,第一次执行的时候就取不出来,超时,后台在网上搜索方法将函数求值自动调用关掉了。倒是不提示超时了,但这样不是办法啊。。。
怎样才能更快的查询到数据呢???跪求各位大大~~~~~5555555
首先感谢magician547 ,vinson_shen, CactusZheng三位朋友的回答。

现在是这样的,取出数据不是为了显示或者分页,而是需要根据这些数据逐一进行其他功能的操作,这款程序是不联网的,是独立后台运行的,所以magician547您的答案我还要再考虑一下。

vinson_shen的答案,我是首先在本机上执行的,不是真正的服务器,不知道真正部署到电力网的服务器上速度会不会提高呢?

CactusZheng,这张表实在是无法分割了,因为数据是3000*3000无重复的数据表,也就是说我无法建立3000张表,每张表里3000条数据,可能是我没有理解您的意思
展开
 我来答
vinson_shen
推荐于2018-03-02 · TA获得超过2503个赞
知道小有建树答主
回答量:960
采纳率:100%
帮助的人:0
展开全部
根据你说的需求:
"可程序中需要查询每行的所有数据"、“查询全部九百万条数据”

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

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

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

“真正部署到电力网的服务器上速度会不会提高呢”
------------------------
服务器当然比你本地要快得多啦,硬件配置根本就不同一个级别,但不管怎样,还是建议你参考上面的建议优化你的处理逻辑才行,否则,你系统的效率将很低。
hy1397471
推荐于2016-05-13 · 知道合伙人软件行家
hy1397471
知道合伙人软件行家
采纳数:4714 获赞数:17154
15年数据库维护及数据库应用系统开发经验,从事零售业、服务业及财务管理类系统开发与维护。

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

决定检索速度的因素有:
1、表格设计对检索的影响:如合理的主键即索引设计。
2、检索语句的效率:如子句的应用、数据的分组、排序、筛选 等等。
3、数据库管理系统的配置:包括硬件配置、软件配置。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CactusZheng
2010-06-12 · TA获得超过198个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:87.4万
展开全部
首先需要知道的是你查询全部记录的目的,然后才能针对目的做修改。
建议根据目的做成一个存储过程或函数,将执行的结果输出处理,不要全部显示,因为输出也是需要消耗大量时间的。
建议将这个表分割一下,根据实际情况,看看能否分割成多张百万记录的表。执行的时候通过多线程进行操作。
因为不知道查询的目的,所以只能泛泛的说说我的想法,具体的优化方案需要具体分析。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
骑梼杌的小哪吒
2010-06-12 · TA获得超过625个赞
知道小有建树答主
回答量:385
采纳率:100%
帮助的人:154万
展开全部
900万条你撞到datatable里也显示不下,也没有人会用一页看900万条数据,你可以从数据库段就分页显示出来,一次只传1000或多少的,这样速度就不会慢了。你这样900的数据库,不是查询的问题,网络传输程序响应都是需要时间的,只能缩减届国际的大小还缩小时间。
楼主建立索引了,但是是全表扫描其实没有where语句索引是基本排不上用场的,所以还是分页吧。每次取数据都是双top这样既可以用得上索引,又减少了返回数据集的大小。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式