Самый быстрый способ подсчета строк в запросе соединения - PullRequest
0 голосов
/ 24 апреля 2019

Я хочу выполнить следующий запрос в java через mysql jdbc: SELECT COUNT (*) FROM ORDERS, CUSTOMER WHERE O_ORDEYKEY = O_CUSTKEY

У меня есть этот код:

Connection conn = new DatabaseConnection().createMySQLConnection();
int totalRows=0;
  for(int j=0;j<tables.size();j++)
        {
            Statement stmt = null;
            ResultSet rs = null;
            int rowCount = -1;
            try {
                conn.setAutoCommit(false);
                stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                rs = stmt.executeQuery("SELECT COUNT(*) FROM " + tables.get(j) 
 + " WHERE O_ORDERKEY = O_CUSTKEY;");
                rs.next();
                rowCount = rs.getInt(1);
                totalRows= totalRows+rowCount;
            } finally {
                rs.close();
                stmt.close();
            }

        }

Но я хотел выполнить его быстрее.Как я могу это сделать?

1 Ответ

1 голос
/ 24 апреля 2019

для облегчения чтения следует избегать старого синтаксиса неявного соединения, основанного на том, где и использовать стандарт SQL (с 1992 года), синтаксис явного соединения

SELECT COUNT (*) 
FROM ORDERS
INNER JOIN CUSTOMER  ON  ORDERS.O_ORDEYKEY = CUSTOMER.O_CUSTKEY

для лучшей производительности убедитесь, что у вас есть индекс на

таблица ORDERS, столбец O_ORDEYKEY

таблица CUSTOMER, столбец O_CUSTKEY

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...