【问题标题】:Bad performance of ResultSet.next() in java sqlite JDBCjava sqlite JDBC中ResultSet.next()的性能不佳
【发布时间】:2017-07-02 01:54:29
【问题描述】:

我在从 sqlite 数据库检索数据时遇到了 ResultSet.next() 的性能问题。我正在使用 org.sqlite.JDBC 驱动程序。我尝试设置语句/ResultSet.fetchSize(),但也没有用。

当我在WHERE 子句中使用带有字符串参数的SQL 语句时,操作持续大约25 秒(WHERE 中带有非字符串参数,它只持续4 秒)。

我发现使用某些驱动程序可以在 URL 中设置send string parameter as unicode = false,这应该会提高性能。但是,我无法找到如何使用 SQLite 连接进行设置。

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 您应该添加更多信息:多少数据、多少行、结果集行大小、数据类型、索引...?您对性能的期望是什么?
  • 如果没有更多信息,我最好的猜测是您有一个巨大的表,并且在where 子句中使用的列上没有索引。但正如我所说,这只是一个猜测

标签: java sqlite jdbc


【解决方案1】:

在 SQLite 中,结果行是按需计算的。 (SQLite 不是客户端/服务器数据库,因此没有通信开销。)

所以当next() 很慢时,这只是意味着您的查询很慢,并且数据库必须执行大量 I/O 和/或许多计算才能返回下一行。

要加快速度,您必须改进数据库设计、查询或硬件。

【讨论】:

    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 2019-11-14
    • 2016-12-26
    相关资源
    最近更新 更多