SQL数据库内表太多,查询一次要半个多小时,如何优化?
SQLserver的数据库,库里面有1100张表,合计大概有几十亿条记录,之前用unionall命令连接表,进行全库联查,查询倒是没有问题,就是耗费时间太长,基本上每次查...
SQL server的数据库,库里面有1100张表,合计大概有几十亿条记录,之前用union all命令连接表,进行全库联查,查询倒是没有问题,就是耗费时间太长,基本上每次查询都在30分钟左右,而且每次查询完SQL server的进程就把内存占满了,必须重启服务才能解决。
请问如何解决这个问题,是优化代码还是什么?如果是优化代码请告知详细的执行代码,谢谢! 展开
请问如何解决这个问题,是优化代码还是什么?如果是优化代码请告知详细的执行代码,谢谢! 展开
5个回答
展开全部
你说的是腾讯泄漏的那个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
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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议你对你要查询的表,建一个索引,索引字段就选择你要查询的条件字段,速度就会快很多的。
追问
我只找到一个表建立索引的方法,请问1100张表怎么批量建立索引?
追答
没有批量建索引的方法,你的数据多应该不是每个表的数据都很多吧,你就把数据表多的几个表建立索引就可以啦!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
优化查询,建立分区,进行分布查询,这样能大幅度的减少查询,时间,但涉及关系如果过多,可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这也太夸张了。难道几十亿数据都是需要用到的吗?是多少年的数据?
可以把多年以前的数据,不经常用到的数据放到备份表中去,这样速度就会快很多
可以把多年以前的数据,不经常用到的数据放到备份表中去,这样速度就会快很多
追问
就是前段时间泄露的那个数据,数据是分散在1100个表里的
追答
。。。。没办法了。这个确实太多了点。sql实在是无法优化到那么细致的地步了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SQL优化都是针对实际业务、表结构来修改SQL文的,没有几个万能又显著的优化方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询