看板 C_Sharp 關於我們 聯絡資訊
各位大大好,小弟有一個問題想請教: 我有一個網頁的列表需求,裡面是用戶寫的一個需求資訊。 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://www.ptt.cc/bbs/C_Sharp/M.1400228532.A.AB6.html
m339606:把access的資料快取或直接並入sql來inner join 05/16 17:48
wind681201:有試過join了,但最低有80ms,有時還是會150ms 05/16 20:36
m339606:將statname直接快取在記憶體中,資料單純撈主資料 05/16 21:21
m339606:如果資料龐大又會讀取過久採用分段顯示或事先快取比較好 05/16 21:25
wind681201:若放在記憶體中,還是需要比對才能抓值,效能會比較好 05/16 21:30
wind681201:嗎? 記憶體是指,session的嗎? 05/16 21:31
ssccg:其實你列的作法就是在記憶體中比對了啊,快取在記憶體是差在 05/17 09:33
ssccg:不用每次再去access撈而已 05/17 09:33
wind681201:但是現在要130ms能不能再快一點? 05/17 14:40
Litfal:問個基本的問題:索引有設吧...? 05/17 23:56
wind681201:有設索引 05/18 21:52