为什么sqlite3应用程序会立即回答此查询,但是慢慢使用sqlitejdbc?

时间:2010-02-11 03:03:50

标签: sqlite sqlitejdbc

我正在使用带有标准Java(1.5.0_19)和sqlite3(3.1.3)的Mac OS X v10.4.11。 (是的,有点旧......但请看下面的评论。)

我有一个带有几十万行的表的sqlite3数据库,带有“name”和“stored”文本列。名称是六个(到目前为止)短字符串之一; stored是一个19个字符的标准日期时间字符串。每列都有一个独立的索引。只有六个唯一的名称值。以下查询:

select distinct name from myTable where stored >= date("now");
当我通过Mac OS X“sqlite3”应用程序执行时,

立即列出相关名称。但是当我在我的应用程序中以通常的方式执行相同的操作时,找到每个名称(总共大约15秒)需要2秒多时间:

String         q = "SELECT DISTINCT name FROM myTable " +
                    "WHERE stored >= DATE('now');" ;
try {
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery(q);
    while (rs.next()) {
        final String s = rs.getString("symbol");
        System.err.println("Got " + s);
    }
    rs.close();
}

我用sqlitejdbc-v054和sqlitejdbc-v055尝试了这个。没有明显的差异。

这是一个已知的缺陷吗?如果没有,任何人都有任何建议如何攻击它?

0 个答案:

没有答案