Java mssql-jdbc: медленное извлечение данных из таблицы со столбцом xml - PullRequest
0 голосов
/ 25 марта 2019

У меня умеренно большая таблица на Sql Server, около 40 миллионов строк.В частности, в этой таблице есть столбец xml, который может быть большого размера.

У меня очень низкая производительность при извлечении данных из этой таблицы с использованием последней версии mssql-jdbc .Я ищу способы улучшить производительность как на стороне Java, так и на стороне базы данных.

На стороне Java это соответствующий код для извлечения данных:

String connectionUrl = "jdbc:sqlserver://10.10.10.28:1433;databaseName=MYDB;user=MYUSER;password=MYPWD;selectMethod=direct;sendStringParametersAsUnicode=false;responseBuffering=adaptive;";

String query = "SELECT * FROM MYTABLE WHERE DateTimeField > '2019-03-25 00:00:00.0' AND DateTimeField < '2019-03-25 13:00:00.0'";

try (Connection sourceConnection = DriverManager.getConnection(connectionUrl);
    Statement stmt = sourceConnection.createStatement(SQLServerResultSet.TYPE_SS_SERVER_CURSOR_FORWARD_ONLY, SQLServerResultSet.CONCUR_READ_ONLY)   ) {

    stmt.setFetchSize(100); 
    resultSet = stmt.executeQuery(query);

    while (resultSet.next()) {

        // do something

    }

}

Я установил размер выборкина 100 строк, потому что я заметил проблемы, если я установил слишком большой размер выборки, возможно, из-за столбца xml, который тяжело отправлять по сети.

У кого-нибудь есть предложения по улучшению производительности при извлечении данныхпо этому сценарию?

1 Ответ

0 голосов
/ 25 марта 2019

Поскольку у вас довольно узкий фильтр, проблема с производительностью, скорее всего, связана с отсутствием индекса относительно размера столбца.

сделать простой

Select count(*) from ......

И посмотреть производительность. Скорее всего, это будет слишком медленно и, таким образом, устранит проблему столбца XML.

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