我正在开发一个应用程序,我需要插入大量的联系人条目。在当前时间约600个联系人,共有6000个电话号码。最大的联系人有1800个电话号码。
截至今天的状态是,我创建了一个自定义帐户来保存联系人,因此用户可以选择在联系人视图中查看联系人。
但是插入的触点是痛苦的慢。我使用ContentResolver.applyBatch插入联系人。我试过不同大小的ContentProviderOperation列表(100,200,400),但总运行时间约为。一样。要插入所有的联系人和数字大约需要30分钟!
大多数问题,我发现有关慢插入SQlite启动事务。但是,由于我使用ContentResolver.applyBatch方法我不控制这一点,我假设ContentResolver负责为我的事务管理。
所以,对我的问题:我做错了,或有什么我可以做的,以加速这个?
安德斯
编辑:
@jcwenger:
原来如此。很好的解释!
所以,然后我将不得不先插入到raw_contacts表,然后使用名称和数字的datatable。我会失去的是对我在applyBatch中使用的raw_id的反向引用。
所以我必须得到所有的新插入的raw_contacts行的id,以用作数据表中的外键?