1

Mac OS X v10.4.11 を標準の Java (1.5.0_19) と付属の sqlite3 (3.1.3) で使用しています。(ええ、少し古いですが、以下のコメントを参照してください。)

「名前」と「保存された」テキスト列を持つ、数十万行のテーブルを持つsqlite3データベースがあります。Name は (これまでのところ) 6 つの短い文字列の 1 つです。stored は 19 文字の標準日時文字列です。各列には、スタンドアロンのインデックスがあります。一意の名前の値は 6 つだけです。次のクエリ:

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 の両方でこれを試しました。目に見える違いはありません。

これは既知の欠陥ですか?そうでない場合、誰かがそれを攻撃する方法を提案していますか?

4

0 に答える 0