[問題] JDBC可變動的搜尋條件

看板java作者 (LaPass)時間13年前 (2012/12/13 09:57), 編輯推噓4(409)
留言13則, 6人參與, 最新討論串1/2 (看更多)
如果是用黏字串的話 很容易黏出要的SQL String sql="SELECT * FROM BOOK WHERE Id IN (0"; for(int i:booklist) { sql+=","+i; } sql+=")"; 但是如果可以的話,還是比較想用這種方式去設定搜尋條件 query="SELECT * FROM BOOK WHERE Id IN (?)"; prepStmt = conn.prepareStatement(query); prepStmt.setIntent(1, id); 請問有辦法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.16.65

12/13 10:25, , 1F

12/13 11:20, , 2F
了解... 感謝 orz
12/13 11:20, 2F

12/13 12:04, , 3F
http://tinyurl.com/64dpwms 用temp table效率似乎比較好?
12/13 12:04, 3F

12/13 16:01, , 4F
如果in statement 的item 超過10 個, 就表示你的作法有
12/13 16:01, 4F

12/13 16:11, , 5F
問題, 請用心去改一下.
12/13 16:11, 5F

12/13 18:02, , 6F
樓上,想請問為什麼?
12/13 18:02, 6F

12/13 18:42, , 7F
in = or 也就是每個條件都要判斷一次, 所以, 慢
12/13 18:42, 7F

12/13 18:47, , 8F
若你要找的東西, 在TABLE 中佔少數,哪個in 就變成全檢查
12/13 18:47, 8F

12/13 19:16, , 9F
瞭解了
12/13 19:16, 9F

12/13 22:08, , 10F
有沒有全檢要請 LaPass 用 explain 這類的指令確定一下唄
12/13 22:08, 10F

12/13 22:46, , 11F
這邊有很大空間可以調教效能,batch, sp, batch-style sp..
12/13 22:46, 11F

12/14 00:29, , 12F
全檢查是指in裏的ITEM, 不是full table scan
12/14 00:29, 12F

12/14 14:16, , 13F
in也會是去用index的~所以=很快的~用IN也一樣
12/14 14:16, 13F
文章代碼(AID): #1GoJO8Kz (java)
文章代碼(AID): #1GoJO8Kz (java)