作者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