Java Sqlite:如何将现有数据库加载到内存中以更快地选择



我有一个我从java程序中查询的SQLite数据库,没有插入,没有表创建,只有许多选择与Union捆绑在一起(一次500(。如何将数据库从.DB加载到内存中以加快选择?

Class.forName("org.sqlite.JDBC");
String urlJDBC = "jdbc:sqlite:";
String url = urlJDBC + dbPath; 
Connection conn = null;
try {
    conn = DriverManager.getConnection(url);
} catch (SQLException e) {
    System.out.println(e.getMessage());
}
for(int i=0, i<10000, i++)
{
    String multipleSELECT = "SELECT a FROM table WHERE b="" + b1 + """ + " 
    UNION ... + " UNION SELECT a FROM table WHERE b="" + b500 + """;
    Statement stmt  = conn.createStatement();
    ResultSet rs = stmt.executeQuery(multipleSELECT);
    check(rs);
}

显然,在i。

是否有一种方法可以将整个数据库加载到内存中(大约2.5 GB,所以小于8 GB RAM(?

加快许多小查询,将它们包裹在单个事务中,然后使用一个准备的单个准备语句,其中具有更改的参数。然后,您应该能够使用仅检查一个数字的简单选择。

或者,写所有数字以检查临时表格,然后立即返回所有匹配名称:

SELECT a
FROM MyTable
JOIN TempTable ON MyTable.b = TempTable.b;

无论哪种情况,您都可以使用覆盖索引来提高查找速度,即,在数字和名称上使用两个列索引,或者更好地使用群集索引。

最新更新