SQL数据库内表太多,查询一次要半个多小时,如何优化?

SQLserver的数据库,库里面有1100张表,合计大概有几十亿条记录,之前用unionall命令连接表,进行全库联查,查询倒是没有问题,就是耗费时间太长,基本上每次查... SQL server的数据库,库里面有1100张表,合计大概有几十亿条记录,之前用union all命令连接表,进行全库联查,查询倒是没有问题,就是耗费时间太长,基本上每次查询都在30分钟左右,而且每次查询完SQL server的进程就把内存占满了,必须重启服务才能解决。
请问如何解决这个问题,是优化代码还是什么?如果是优化代码请告知详细的执行代码,谢谢!
展开
 我来答
Forsir
2014-01-20
知道答主
回答量:2
采纳率:100%
帮助的人:1550
展开全部
你说的是腾讯泄漏的那个QQ群数据库吧!!
for GroupData = 1 to 11
conn.open "PROVIDER=SQLOLEDB;DATA SOURCE=****;UID=sa;PWD=sa;DATABASE=GroupData"&GroupData
for Group = (GroupData-1)*100+1 to (GroupData)*100
exec = "SELECT * FROM Group"&Group&" where QQNum = 375000016"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
if not rs.eof then
response.write(Rs("Nick")+"<br>")
else
response.write("表"&Group&"没有记录"+"<br>")
end if
rs.close
next
next
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0a87a60c4
2013-11-26 · TA获得超过320个赞
知道小有建树答主
回答量:202
采纳率:66%
帮助的人:91.9万
展开全部
建议你对你要查询的表,建一个索引,索引字段就选择你要查询的条件字段,速度就会快很多的。
追问
我只找到一个表建立索引的方法,请问1100张表怎么批量建立索引?
追答
没有批量建索引的方法,你的数据多应该不是每个表的数据都很多吧,你就把数据表多的几个表建立索引就可以啦!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
s1007236623
2017-12-07
知道答主
回答量:2
采纳率:0%
帮助的人:1936
展开全部
优化查询,建立分区,进行分布查询,这样能大幅度的减少查询,时间,但涉及关系如果过多,可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yjaspen
2013-11-26 · TA获得超过204个赞
知道小有建树答主
回答量:374
采纳率:0%
帮助的人:187万
展开全部
这也太夸张了。难道几十亿数据都是需要用到的吗?是多少年的数据?
可以把多年以前的数据,不经常用到的数据放到备份表中去,这样速度就会快很多
追问
就是前段时间泄露的那个数据,数据是分散在1100个表里的
追答
。。。。没办法了。这个确实太多了点。sql实在是无法优化到那么细致的地步了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzh3452
2013-11-26 · TA获得超过1044个赞
知道小有建树答主
回答量:1168
采纳率:100%
帮助的人:860万
展开全部
SQL优化都是针对实际业务、表结构来修改SQL文的,没有几个万能又显著的优化方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式