繁体   English   中英

Java SQLite JDBC“ SELECT”语句非常慢

[英]Java SQLite JDBC “SELECT” statement very slow

从一个API我得到〜9000项,我必须将它们插入表中。 这些条目中每一个的详细数据都存储在另一个表中,其中包含约45000个条目

现在,我试图将这9000个条目插入到新表中,并从另一个表中获取有关这些条目的所需信息。

带有45000个条目的表中数据的SELECT语句每次花费30-90ms。

选择的代码如下(重复9000次):

                long startTime = System.nanoTime();

                PreparedStatement selectDB = cStatic.prepareStatement("SELECT column1, column2, column3, column4 FROM DB WHERE ID = ?");
                selectDB.setInt(1, rsIDs.getInt(3));

                ResultSet rsDB = selectDB.executeQuery();

                long endTime = System.nanoTime();

                long duration = (startTime - endTime) / 1000000;

从整个过程(收集信息,分配信息)中,仅SELECT + ResultSet占用了95%的处理时间,我想知道如何才能加快处理速度

因为我已经在寻找解决方案,所以我已经在结果集中使用索引“ getInt / getString”,并且只调用表中所需的列而不是整个行,但这只是一个很小的改进。

其他每条语句(UPDATE,INSERT,DELETE)几乎都不使用1ms,为什么SELECT需要那么多时间?

编辑:

并没有真正加快SELECT的速度,但是我正在重建代码以仅使用SELECT一次,并将所有重要数据存储到数组中,现在只需2-3秒即可完成,而不是5分钟。

感谢Rahul,我尝试为列提供索引,它也有所帮助:

ALTER TABLE table_name添加索引idx_idID );

但是30ms不应算慢,您可能要确保为ID列创建了索引或索引,因为您在WHERE条件下使用该列作为WHERE ID = ?

不,我的意思是如果您还没有在ID列上创建唯一索引,请在下面说一遍,这将最终通过执行索引扫描来加快查询速度。

ALTER TABLE table_name ADD INDEX `idx_id` (`ID`);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM