我正在编写一个查询来在jlist中加载我的数据
public void showtitle(){
DefaultListModel model = new DefaultListModel();
booklist.setModel(model);
try{
Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection conn = DriverManager.getConnection("jdbc:derby://"+X, "APP", "app");
Statement stmt = conn.createStatement();
String query="SELECT TITLE FROM BOOK WHERE ISBN LIKE '%"
+ code.getText().toUpperCase()+"%' OR "
+ " TITLE LIKE '%"+name.getText().toUpperCase()+"%' ";
ResultSet rs = stmt.executeQuery(query);
while(rs.next()){
String isbn = rs.getString(1);
model.addElement(isbn);
}
}
catch ( ClassNotFoundException | SQLException ex) {
JOptionPane.showMessageDialog(null, "Unknown Error!! Data cannot be displayed!" + ex);
}
}
我这样称呼这个方法:
private void codeKeyReleased(java.awt.event.KeyEvent evt)
{
showtitle();
}
插入1000个数据后,我的查询运行速度非常慢。我的手术不好吗?有一些致命的错误吗?我该怎么办?
答案 0 :(得分:1)
您所做的不仅仅是在方法中执行查询。
您还在创建JDBC连接,这可能是一种太多更昂贵的操作。
尝试创建一次JDBC连接并将其保存在应用程序的某个位置。
然后,当用户运行您的密钥释放事件时,只需运行您的查询并获取结果。
答案 1 :(得分:0)
看起来你的情况并不真正需要'喜欢'的力量,也许只是用'='代替? 'LIKE'功能强大但可能无法使用索引,因此您最终可能会执行全表扫描(请参阅Use '=' or LIKE to compare strings in SQL?)