Java MSSQL-JDBC:从带有XML列的表中检索数据速度很慢

时间:2019-03-25 10:56:15

标签: java sql sql-server xml jdbc

我在Sql Server上有一个中等大小的表,大约有4000万行。 特别是,此表的xml列可能很大。

使用last version of 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 :(得分:0)

由于您的过滤器非常狭窄,因此性能问题很可能是由于缺少索引和列大小所致。

做一个简单的

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

并查看性能。很有可能也会很慢,从而消除了XML列的问题。