Достаточно интересное решение я нашел в интеренете, которое позволяет увеличить производительность получения результата уникальных значений в таблице. Найденное решение использовалось в частности при работе с SQLite JDBC драйвером.
SELECT DISTINCT GroupID from Jobs
Используем вместо обычного кода следующую конструкцию (я сразу указываю в java формате):
st.executeUpdate("CREATE TEMP TABLE IF NOT EXISTS d(c UNIQUE);");
st.executeUpdate("INSERT OR IGNORE INTO d(c) SELECT GroupID FROM Jobs;");
ResultSet rs = st.executeQuery("SELECT c FROM temp.d ORDER BY c ASC;");
while (rs.next()) {
listModel.addElement(rs.getString(1));
}
st.executeUpdate("DROP TABLE IF EXISTS d;");
решение было найдено на http://www.pubbs.net/200910/sqlite/13734-sqlite-improving-select-distinct-performance.html
Очевидно существует некоторый предел по объему данных когда прямая DISTINCT конструкция является более предпочтительной, однако с увеличением объема, выгоднее использовать метод с построением временной таблицы. проверено.
Также очевидно, такую штуку можно проделать и с помощью представлений.
[ad#main]

