我正在使用带有标准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尝试了这个。没有明显的差异。
这是一个已知的缺陷吗?如果没有,任何人都有任何建议如何攻击它?