作者LaPass (LaPass)
看板java
標題[問題] JDBC可變動的搜尋條件
時間Thu Dec 13 09:57:24 2012
如果是用黏字串的話
很容易黏出要的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
2F:→ LaPass:了解... 感謝 orz 12/13 11:20
4F:→ Lordaeron:如果in statement 的item 超過10 個, 就表示你的作法有 12/13 16:01
5F:→ Lordaeron:問題, 請用心去改一下. 12/13 16:11
6F:→ LaPass:樓上,想請問為什麼? 12/13 18:02
7F:→ Lordaeron:in = or 也就是每個條件都要判斷一次, 所以, 慢 12/13 18:42
8F:→ Lordaeron:若你要找的東西, 在TABLE 中佔少數,哪個in 就變成全檢查 12/13 18:47
9F:→ LaPass:瞭解了 12/13 19:16
10F:→ qrtt1:有沒有全檢要請 LaPass 用 explain 這類的指令確定一下唄 12/13 22:08
11F:推 plover:這邊有很大空間可以調教效能,batch, sp, batch-style sp.. 12/13 22:46
12F:→ Lordaeron:全檢查是指in裏的ITEM, 不是full table scan 12/14 00:29
13F:推 swpoker:in也會是去用index的~所以=很快的~用IN也一樣 12/14 14:16