【发布时间】:2023-03-17 14:32:01
【问题描述】:
我有一个包含电影信息的数据库,该数据库(反过来)从网络服务器上的 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
谢谢, 德维恩
【问题讨论】:
-
+1 好问题。你怎么知道这部电影已经存在于数据库中?请将其添加到您的帖子中。
-
您认为我还有什么要补充的吗?
-
什么平台? Objective-C + sqlite 让我想到 iPhone/iPad。
-
假设重复项将触发引发约束,可能尝试插入记录并处理已存在的情况会更快。
标签: objective-c database sqlite performance