[問題] 資料庫的對應效能

看板C_Sharp (C#)作者 (阿風~~)時間11年前 (2014/05/16 16:22), 編輯推噓1(1010)
留言11則, 4人參與, 最新討論串1/1
各位大大好,小弟有一個問題想請教: 我有一個網頁的列表需求,裡面是用戶寫的一個需求資訊。 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

05/16 17:48, , 1F
把access的資料快取或直接並入sql來inner join
05/16 17:48, 1F

05/16 20:36, , 2F
有試過join了,但最低有80ms,有時還是會150ms
05/16 20:36, 2F

05/16 21:21, , 3F
將statname直接快取在記憶體中,資料單純撈主資料
05/16 21:21, 3F

05/16 21:25, , 4F
如果資料龐大又會讀取過久採用分段顯示或事先快取比較好
05/16 21:25, 4F

05/16 21:30, , 5F
若放在記憶體中,還是需要比對才能抓值,效能會比較好
05/16 21:30, 5F

05/16 21:31, , 6F
嗎? 記憶體是指,session的嗎?
05/16 21:31, 6F

05/17 09:33, , 7F
其實你列的作法就是在記憶體中比對了啊,快取在記憶體是差在
05/17 09:33, 7F

05/17 09:33, , 8F
不用每次再去access撈而已
05/17 09:33, 8F

05/17 14:40, , 9F
但是現在要130ms能不能再快一點?
05/17 14:40, 9F

05/17 23:56, , 10F
問個基本的問題:索引有設吧...?
05/17 23:56, 10F

05/18 21:52, , 11F
有設索引
05/18 21:52, 11F
文章代碼(AID): #1JTSgqgs (C_Sharp)
文章代碼(AID): #1JTSgqgs (C_Sharp)