我正在使用带有标准 Java (1.5.0_19) 和 sqlite3 (3.1.3) 的 Mac OS X v10.4.11。(是的,有点老......但请参阅下面的评论。)
我有一个 sqlite3 数据库,其中有一个几十万行的表,带有“名称”和“存储”文本列。名称是六个(到目前为止)短字符串之一;存储的是 19 个字符的标准日期时间字符串。每列都有一个独立的索引。只有六个唯一的名称值。以下查询:
select distinct name from myTable where stored >= date("now");
当我通过 Mac OS X“sqlite3”应用程序执行它时,会立即列出相关名称。但是当我在我的应用程序中以通常的方式做同样的事情时,找到每个名字需要超过 2 秒(总共大约 15 秒):
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 试过了。没有明显的区别。
这是已知的缺陷吗?如果没有,有人对如何攻击它有任何建议吗?