作者dumbiekbbx (呐喊的力量)
看板Database
标题[SQL ] Excel连线SQL Server效率问题
时间Fri Mar 24 10:16:42 2017
资料库名称:SQL Server
资料库版本:2008 R2
内容/问题描述:
先前情提要一下,近期因同事业务需求,接手了一份与SQL Server连线的Excel档
但我从来没碰过SQL...(抖
因为每次开启都需要花上2分半钟以上的时间,咱老板觉得效率太差,影响工作
而且开启时,会不时与Server连动,造成程式停摆,影响日常业务
同事希望能改善此问题
开启档案时,"似乎"都在建构一个约10万笔资料的表格(含有50几个栏位)
说似乎是因为我对Excel连线SQL Server的方式不是很熟悉,不太确定是否这样运作
建构完成後,使用者可以下SQL指令,接着便会从10几个资料表中去找需要的资料
(如:上半季的资料),然後组该表格
这10几个资料表有大有小,小的几10笔资料大则60几万笔。
总而言之就是从每个Sheet去捞我要的东西,然後组成一个表格这样
看了SQL写法後,发现架构满单纯的:从10几个资料表中去SELECT需要的栏位且改名
如此重复50几次(有WHERE、CASE判断)
之後就把资料表一个个INNER JOIN
想请问各位大大:
1. 是否因为资料量大,造成执行速度很慢?
2. 是否SQL写法还有待调整?因为对SQL只认识了三天
不确定是否因为一连串的JOIN导致执行速度超慢
3. 还未确定是否已经设定INDEX。若有设定,还能从哪边下手来改善?
感谢各位大大耐心看完问题,新手上路请多包涵!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.251.185.211
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1490321805.A.955.html
1F:→ mike4994: 我是先写好STORR PROCDURE 来让EXCEL抓 ,希望对你有帮助 03/24 11:35
好的,我会研究看看Store procedure,感谢!
2F:→ terrybob: 我的话,工作表、资料表1对1,然後产index去设定栏位 03/24 16:56
3F:→ terrybob: 60万笔很少啦…每个资料表要有互相对应的栏位,去对应 03/24 16:57
4F:→ terrybob: 这样未来维护、跟提昇速度…等,才会比较好。 03/24 16:57
可否请教一个问题,如果像我这种情况,多久之内执行完毕才算正常?
5F:→ terrybob: 先建资料表吧…建完再看结构、栏位、sql是否要调整? 03/28 12:31
6F:→ terrybob: 没有所谓多久内执行完算正常的,比之前更快才是目的 03/28 12:31
受教了!感谢大大指教
7F:推 longlongint: 一定要用excel? 03/28 23:06
Long大有更好的方式吗?主要只是想要把资料整理出来,栏位多又杂
用Excel好像是比较亲民的
不过我也很愿意尝试其他方法!
※ 编辑: dumbiekbbx (61.219.166.19), 03/29/2017 08:59:39
8F:推 longlongint: 没有更好的建议 会想知道excel里面sql指令&资料表 03/29 19:58
9F:→ longlongint: 的意义然後 自己从命令列下指令 03/29 19:58
10F:→ longlongint: 或是 如果资料没有即时性 可以copy一份计算结果出 03/29 19:59
11F:→ longlongint: 来 03/29 19:59
12F:→ longlongint: 然後对大量资料做join的时候要小心一点吧...... 03/29 20:03
13F:→ longlongint: 但是你才碰三天 然後我不清楚你现场的状况XD 03/29 20:03