1

我将大量数据插入到我的 sqlite 数据库中。现在完成这个过程需要很长时间,这对用户来说是令人沮丧的。这里的任何人都可以告诉我如何使这个过程快速或任何替代方法。

请帮助我..

4

2 回答 2

1
  1. 如果您要存储图像或类似的东西,请考虑不要将其存储在数据库中,因为这样做效率很低。将这种二进制数据存储在 Documents 文件夹中,如果您需要在数据库中跟踪它,请将文件名存储在数据库中,而不是图像。

  2. 如果可能,请在后台执行这些操作,例如通过Grand Central DispatchNSOperationQueue. 这些技术也在并发编程指南中进行了讨论。如果您使用 SQLite 包装器执行此操作,例如出色的FMDB(如果您还没有的话,我强烈建议您调查一下),您可以使用它FMDatabaseQueue(使用 GCD)来协调后台数据库操作和前台数据库查询。因为它使用队列,所以您只需要确保在较小的任务中中断后台数据库操作,以避免出现阻塞前台数据库操作的感觉。

于 2012-08-01T06:38:59.770 回答
0

NSOperationQueue提供用于运行其操作的线程。

创建NSInvocationOperation对象并将其添加到NSOperationQueue.

 NSInvocationOperation *insertOperationObject1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(insertMethod1) object:nil];
    NSInvocationOperation *insertOperationObject2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(insertMethod2) object:nil];
    NSInvocationOperation *insertOperationObject3 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(insertMethod3) object:nil];

//将数据库获取操作添加到 NSOperationQueue

 NSOperationQueue     *m_opqInsertQueue = [[[NSOperationQueue alloc] init] autorelease];
        [m_opqCustomerProfileDataFetchQueue setMaxConcurrentOperationCount:1];
        [m_opqCustomerProfileDataFetchQueue addOperations:[NSArray arrayWithObjects:insertOperationObject1, insertOperationObject2, insertOperationObject3,  nil] waitUntilFinished:NO];
于 2012-08-01T06:47:50.833 回答