我正在解析一个由 ~600K 行组成的 XML 文件。解析 XML 中的数据并将其插入数据库不是问题,因为我使用 SAX 解析并使用 LOAD DATA INFILE(来自 .txt 文件)插入数据库。txt 文件使用 JDBC 在 Java 中填充。所有这些都需要 5 秒钟才能填充到数据库中。
我的瓶颈现在正在执行多个 SELECT 查询。基本上,每次我点击某个 XML 标记时,我都会调用 SELECT 查询从另一个数据库表中获取数据。添加这些 SELECT 查询使我的填充时间达到 2 分钟。
例如:
- 我正在解析一个由书籍、文章、论文等组成的 XML。
- 每本书/文章都有子元素,例如 isbn、标题、作者、编辑、出版商。
- 在每个作者/编辑/出版商处,我需要查询数据库中的一个表。
- 假设我遇到了价值托尔金的作者标签。
- 我需要查询数据库中已经存在的名为 author_table 的表
- 查询是 [select author_id from author_table where name = 'Tolkien']
这就是瓶颈发生的地方。
现在我的问题是:有没有办法加快速度?
顺便说一句,我认为 2 分钟很长的原因是因为这是一个家庭作业,我还没有完成填充数据库。我估计整个数据库人口需要 5 分钟。因此,我寻求性能优化建议的原因。