推 darkk6: 要達成很簡單,問題是你是還是要用 SQL 的方式去存取 07/18 19:01
→ darkk6: 修正: "是不是"還是要用 SQL.... 07/18 19:02
→ gw10313: 如果可以的話不用SQL也沒關係 07/18 19:04
→ gw10313: 只是還是需要有類似SQL的抓取資料的方法就可以 07/18 19:05
→ gw10313: 目前我都是在用資料去比對A欄位的值然後抓B跟C 07/18 19:05
推 darkk6: 還是要用 SQL query 語法去抓資料就是了? 07/18 19:10
→ gw10313: 不限SQL 只要能抓出資料就可以 07/18 19:14
推 darkk6: 那其實可以自己寫一個 class 用 Map 和 List 去做就好啦 07/18 19:30
→ gw10313: 請問是什麼意思 我不太懂 囧 07/18 21:06
→ eieio: 你是不懂什麼是 Map,還是不懂怎麼用 Map 做? 07/18 21:16
→ gw10313: 我是不太懂怎麼用MAP做 沒有一個想法要怎麼把這東西 07/18 21:20
→ gw10313: 轉換成 我要的東西 07/18 21:20
→ Expsun: 你寫Java可是不知道Map @@ 可以去官網看Collections 07/18 21:41
→ gw10313: 我知道MAP 只是沒有一個想法要怎麼去用再我要的東西上面 07/18 21:45
→ gw10313: 我先來看看好了 07/18 21:46
推 SHANGOYANYI: memcache / coherence 07/18 21:49
推 steven11329: 問題是你的資料量多大?記憶體夠放嗎? 07/18 22:21
推 ripple0129: HSQLDB不知道是不是你要的 07/18 23:23
→ gw10313: 目前是三十萬筆資料左右 感覺應該夠(?) 07/18 23:40
→ gw10313: 因為我目前程式都寫好了 主要是太多一筆一筆SQL的呼叫 07/18 23:42
→ gw10313: 所以造成程式效率低落 想要找其他方法加速程式效率 07/18 23:43
→ gw10313: HSQLDB 我也會去看看 希望能找到方法解決 07/18 23:43
推 p23j8a4b9z: 你這應該是後面db要處理 跟前面沒什麼關係吧 07/19 00:34
→ p23j8a4b9z: 如果要寫入 最好是包成一個檔案在寫入 07/19 00:36
推 p23j8a4b9z: 或是用connection pool 開多個去存取 07/19 00:38
→ p23j8a4b9z: 我倒是覺得這個跟你寫法沒什麼關係 不做處理一次run一 07/19 00:39
→ p23j8a4b9z: 個sql會慢非常正常 07/19 00:39
推 haha02: 我覺得你把存取資料庫的方法跟呼叫的方式描述一下吧 07/19 00:46
→ haha02: 搞不好根本就是寫法的問題 例如每下一次SQL開關一次連線 07/19 00:47
--
我存取資料庫的方式是用statement去對我的MYSQL資料庫做存取
然後我下的SQL只有簡單的 "select * from tableA where A=1;"
其中我的程式有一個do while迴圈主要的SQL都下在裡面
Statement stmt = conn.createStatement();
do{
SQL="Select * from tableA where A="+變數; //主要是迴圈變數會變
rs=stmt.executeQuery(SQL); //執行每次的SQL
if(rs.next()){ //如果有這筆資料就做我要的計算
do something;
}
}while();
--
大概是這樣 我大概知道是太常跟資料庫下SQL
每筆資料進來都有新的變數 所以我就會跟資料庫下SQL
可是這樣造成我程式效率低落
所以才來這邊想要請問一下大家有什麼比較好的方法
前面沒有說清楚真的不好意思
--
※ 編輯: gw10313 (140.117.80.55), 07/19/2016 04:07:54
→ jej: TableA有三十萬筆 用do while 要很快... 07/19 05:04
→ jej: ColumnA要做index吧 記憶體式的db或許適合你 07/19 05:07
→ jej: 不然就是 30萬一次查出來 用java8的stream 記憶體夠就行 07/19 05:11
→ gw10313: 我有對columnA做index 還是覺得很慢QQ 07/19 08:49
→ dennisxkimo: 我看過一個文章 少用select * 07/19 11:41
→ dennisxkimo: 我有些大table會用到TEMPORARY TABLE 07/19 11:51
→ dennisxkimo: 不過我資料是靜態歷史紀錄 條件下資料丟temp然後分析 07/19 11:54
推 yyc1217: 搜尋java in-memory indexed database就有很多library 07/19 15:11
推 haha02: 改用PreparedStatement應該可以改善一點點 07/20 22:10
→ marsyang1: guava的Loading Cache, or 試試redis 07/21 20:49