Почему приложение sqlite3 немедленно отвечает на этот запрос, но медленно использует sqlitejdbc? - PullRequest
1 голос
/ 11 февраля 2010

Я использую Mac OS X v10.4.11 со стандартными версиями Java (1.5.0_19) и sqlite3 (3.1.3). ( Да, немного старенький ... но см. Комментарий ниже .)

У меня есть база данных 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. Нет ощутимой разницы.

Это известный недостаток? Если нет, у кого-нибудь есть предложения, как его атаковать?

...