Java 使用大型数据库提高SQLite性能

Java 使用大型数据库提高SQLite性能,java,sql,database,sqlite,query-performance,Java,Sql,Database,Sqlite,Query Performance,我有一个SQLite数据库,模式非常简单,但在其中一个表中我有200000多个对象,第二个表中我有10000多个对象。 对于这两个表,我有索引,并且访问第一个表的频率更高 这是一个只读数据库,我不需要插入/删除/更改行 我的应用程序使用Java,我使用Xerial jdbc驱动程序查询数据库 我的问题是有时(或第一次)我的SQL选择需要很多时间(超过120秒)。其次,当使用相同的请求时,速度会快得多(比如3秒!) 我想保证我的客户在访问数据库时有一个固定的时间。我想第一次的速度很慢,因为索引还没

我有一个SQLite数据库,模式非常简单,但在其中一个表中我有200000多个对象,第二个表中我有10000多个对象。 对于这两个表,我有索引,并且访问第一个表的频率更高

这是一个只读数据库,我不需要插入/删除/更改行

我的应用程序使用Java,我使用Xerial jdbc驱动程序查询数据库

我的问题是有时(或第一次)我的SQL选择需要很多时间(超过120秒)。其次,当使用相同的请求时,速度会快得多(比如3秒!)

我想保证我的客户在访问数据库时有一个固定的时间。我想第一次的速度很慢,因为索引还没有加载。 有没有办法强制加载? 有没有办法从文件中加载完整的数据库并将其保存在内存中(文件大小约为1.5Gb)

欢迎任何改进的帮助


Sébastien.

对于需要执行但需要大量初始化的生产应用程序,一种常见的策略是在第一个用户访问应用程序之前对其进行初始化


另一种选择是将数据库与应用程序分开托管。由于您没有提供任何有关您的应用程序是web应用程序、桌面应用程序、电话应用程序还是其他任何应用程序的信息,因此很难给出合理的建议。

我的应用程序是一个在Tomcat中运行的servlet,运行在桌面计算机上(至少有8GB的RAM)。当从客户端应用程序(在智能手机/平板电脑上运行)收到请求时,此servlet提取数据。因此,我可以并行获得许多请求。您是如何配置SQLite的页面缓存的?我目前只使用默认值。