gpt4 book ai didi

objective-c - 优化数据库调用

转载 作者:IT王子 更新时间:2023-10-29 06:26:55 25 4
gpt4 key购买 nike

我有一个充满电影信息的数据库,这些信息(反过来)从网络服务器上的 XML 文件读入数据库。

接下来会发生什么:

Gather/Parse XML and store film info as objects
Begin Statement
For every film object we found:
Check to see if record for film exists in database
If no film record, write data for film
Commit Statement

目前我只是使用(最基本的)测试电影的存在:

SELECT film_title FROM film WHERE film_id = ?

如果返回一行,则电影存在,如果不存在,则我需要添加它...

我也试过用

INSERT INTO film (film_id, film_title, film_mStar, film_dStar, film_date) SELECT ?, ?, ?, ?, ?, ?, ? WHERE NOT EXISTS (SELECT 1 FROM film WHERE film_id = ?)

在处理时间方面达到完全相同的效果...

唯一的问题是,数据库中有数百条记录(很多电影!)并且因为它必须在写入电影之前检查数据库中是否存在电影,所以整个过程最终花了很长时间(210 部电影大约需要 27 秒)

是否有更有效的方法,或者一般性的建议?

编程语言为Objective-C,数据库为sqlite3,平台为iPhone/iPad/iPodTouch

谢谢,德维恩

最佳答案

您可以尝试在 film_id 上添加索引以加快对现有电影的搜索。

像这样的东西应该可以完成工作:

CREATE INDEX IF NOT EXISTS film_index_film_id ON film (film_id)

如果您的唯一键实际上是其他东西(不仅仅是 film_id,还可能是标题和年份),那么您应该包括您在索引中使用的所有列。

关于objective-c - 优化数据库调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3058511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com