作者wind681201 (阿风~~)
看板C_Sharp
标题[问题] 资料库的对应效能
时间Fri May 16 16:22:08 2014
各位大大好,小弟有一个问题想请教:
我有一个网页的列表需求,里面是用户写的一个需求资讯。
Data1 --SQL:里面是放主单资料,其中有一个栏位是状态编号。
且,因为一些因素,状态可以让我们新增,这个部份是放在Access中。
Data2 --Access:栏位为id, statname
我要抓的列表很简单,就是在主单抓好後,我要将状态的中文名称也show出来。
我目前是先用列举,将主单抓出後,在用新的型别去对应状态名称。
ac = accessclass
方法一:
var a = from d in data1
select {.name = d.name,
.statname = ac.getstatname(d.statno)}
ps: getstatname这个会回传一个String,里面是用DataReader的方式去抓,
所以,若有十笔,就会出现十次连线。
方法二:
var a = from d in data1
select {.name = d.name,
.statname = (from d2 in access.asenumerable()
where d2.id = d.statno
select d2.statname).first()}
这二种,我都试过了,测出来的秒数,300ms
想请问,有没有更好的方式去作这样的东西?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 203.71.67.243
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1400228532.A.AB6.html
1F:推 m339606:把access的资料快取或直接并入sql来inner join 05/16 17:48
2F:→ wind681201:有试过join了,但最低有80ms,有时还是会150ms 05/16 20:36
3F:→ m339606:将statname直接快取在记忆体中,资料单纯捞主资料 05/16 21:21
4F:→ m339606:如果资料庞大又会读取过久采用分段显示或事先快取比较好 05/16 21:25
5F:→ wind681201:若放在记忆体中,还是需要比对才能抓值,效能会比较好 05/16 21:30
6F:→ wind681201:吗? 记忆体是指,session的吗? 05/16 21:31
7F:→ ssccg:其实你列的作法就是在记忆体中比对了啊,快取在记忆体是差在 05/17 09:33
8F:→ ssccg:不用每次再去access捞而已 05/17 09:33
9F:→ wind681201:但是现在要130ms能不能再快一点? 05/17 14:40
10F:→ Litfal:问个基本的问题:索引有设吧...? 05/17 23:56
11F:→ wind681201:有设索引 05/18 21:52