在iOS中检索数据需要很长时间.显示数据需要5分钟


- (NSMutableArray*)getEmployeeDetailsByEmployeeName:(int)postid
{
    NSMutableArray *recordSet = [[NSMutableArray alloc]init];
    [self closeanyOpenConnection];

    NSString *fetchQuery = [NSString stringWithFormat:@"select * from SubCategory_Content where SubcategoryID==%d",postid];
    const char *selectQuery = [fetchQuery UTF8String];
    sqlite3_stmt *sqlstatement = nil;
    if (sqlite3_prepare_v2(databaseReference, selectQuery, -1, &sqlstatement , NULL)==SQLITE_OK) {
        NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
        while (sqlite3_step(sqlstatement) == SQLITE_ROW)
        {
            char* PostIDchar = (char*)sqlite3_column_text(sqlstatement, 1);
            NSString *PostID = [NSString stringWithUTF8String:PostIDchar];
            [dict setValue:PostID forKey:@"PostID"];
            char* ShortContentChar = (char*)sqlite3_column_text(sqlstatement, 2);
            NSString *ShortContentStr = [NSString stringWithUTF8String:ShortContentChar];
            [dict setValue:ShortContentStr forKey:@"ShortContent"];
            char* imageDataFromDatabase = (char*)sqlite3_column_text(sqlstatement, 4);
            NSString *ShortContentImage = [NSString stringWithUTF8String:imageDataFromDatabase];
            [dict setValue:ShortContentImage forKey:@"ShortContentImage"];
            char* titleChar = (char*)sqlite3_column_text(sqlstatement, 5);
            NSString *titlestr = [NSString stringWithUTF8String:titleChar];
            [dict setValue:titlestr forKey:@"Title"];
            [recordSet addObject:dict];
            imageDataFromDatabase = nil;
            dict = nil;
            dict = [[NSMutableDictionary alloc]init];
        }
        dict = nil;
    }
    return  recordSet;
}

在不知道更多细节的情况下,我建议在SubcategoryID列上创建一个索引,如果你还没有这样做,那么使用sqlite3_exec调用来执行"CREATE index idx_SubcategoryID on SubCategory_Content (SubcategoryID ASC)"。

您应该看到性能的显著提高,如果这实际上是查询的问题。

如果你只期望从你的查询中得到一个结果,那么一定要在语句的末尾添加"LIMIT 1",但是添加了一个索引,你就会减轻这种不足。

你还要求它做大量的工作来存储和检索图像数据作为文本。如果您可以在应用程序中进行这种更改,我建议将它们存储为BLOB值。

首先,我将在SELECT语句周围设置一些断点,看看这是否实际上是您的减速,很可能是。

谢谢

相关内容

最新更新