Я создал нижеприведенную программу JDBC для получения записи из базы данных
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@db-user-rw-a.qa.amazon.com:1100/MONEY";
String username = "amazon212313";
String password = "XXXXX";
System.out.println("Connecting database...");
Connection connection = null;
if (connection == null)
{
try {
connection = DriverManager.getConnection(url, username,password);
System.out.println("Database connected!");
}
catch (Exception ex)
{
System.out.println("Database Connection Failed...!!!");
System.out.println(ex);
}
}
Statement statement=connection.createStatement();
ResultSet rs1=statement.executeQuery("select account_number,flag,flag2,flag3,flag4,flag5,flag6,flag7,amount from transaction_p2");
ResultSetMetaData metadata = rs1.getMetaData();
int columnCount = metadata.getColumnCount();
System.out.println(columnCount);
while(rs1.next())
{
// account_number in if condition
if(rs1.getString(1).contains("2195281819521610731"))
{
System.out.println(rs1.getString(1));
}
}
connection.close();
У меня есть более 99000 записей в базе данных, и вышеуказанная программа работает нормально, но для получения конкретного аккаунта требуется огромное времячисловые значения.Получение значения занимает более 20 минут (иногда больше).
Есть ли другой способ ускорить поиск значения в наборе результатов.Как создание потока 100 для поиска определенного номера счета, если он найден, то он должен вернуть значение.
Кроме того, возможно, в базе данных есть дубликат номера счета.Все, что мне нужно, - мне нужны многопоточности для доступа к результирующему набору, поиска по конкретному номеру учетной записи и возврата всех найденных учетных записей в соответствии с условием if.
Поделитесь своей идеей для достижения этой задачи.
Обновленопрограмма с предложением WHERE и приведенная ниже в консоли:
Обновленный код:
ResultSet rs1=statement.executeQuery("select account_number,flag,flag2,flag3,flag4,flag5,flag6,flag7,amount from transaction_p2 where account_number=2195281819521610731");
ResultSetMetaData metadata = rs1.getMetaData();
int columnCount = metadata.getColumnCount();
System.out.println(columnCount);
System.out.println(rs1.next()+"\t boolean value");
while(rs1.next())
{
// account_number in if condition
System.out.println(rs1.getString(1));
}
Вывод:
Connecting database...
Database connected!
12
false boolean value
Если я использовал execute () вместо executeQuery (), который возвращает «TRUE», но не уверен, как я могу получить подробности набора результатов.
Указанный выше номер счета запрашивается в дБ и получается результат.