2010-02-01 3 views
0

장치에 응용 프로그램을 빌드 할 때 성능 문제가 있습니다. 그것은 실제로 내 데이터베이스에 있습니다. 나는 2114 개의 와인 이름이있는 와인 세부 테이블을 가지고있다.장치에 Objective C 응용 프로그램을 빌드 할 때의 성능

-(NSMutableArray*)getWineDetails 
{ 
    [wineDetailsList removeAllObjects]; 

    sqlite3_stmt* statement; 
    const char *sql = "select *from wineDetails order by name"; 

    if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) != SQLITE_OK) 
    { 
     NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database)); 
    } 

    while (sqlite3_step(statement) == SQLITE_ROW) 
    { 
     primaryKey = sqlite3_column_int(statement, 0); 
     //printf("\n primaryKey1 Value:%d",primaryKey); 

     wineDetails *wineDets = [[wineDetails alloc] initWithPrimaryKey:primaryKey database:database];  
     [wineDetailsList addObject:wineDets]; 

     //printf("\n ==========================%d",[wineDetailsList count]); 
     [wineDets release]; 
    } 

    sqlite3_finalize(statement); 
    printf("\n Inside AppDelegate .....wineDetailsList count:%d",[wineDetailsList count]); 
    return wineDetailsList; 

}

나는 테이블에 와인 이름을 표시해야 다른 컨트롤러의 viewWillAppear에서이 메소드를 호출 오전 : 모든 그 와인의 이름을 얻으려면, 나는 appDelegate에서이 코드를 작성 전망.

viewWillAppear 코드 :

-(void)viewWillAppear:(BOOL)animated 
{ 
    CorkItAppDelegate* appDelegate = (CorkItAppDelegate*)[[UIApplication sharedApplication] delegate]; 
    winesList = [appDelegate getWineDetails]; 
    [tableView reloadData]; 
} 
다음

문제가 나는 장치를 빌드 할 때,이 때문에 데이터베이스의 날짜의 양을 컨트롤러로 이동합니다 너무 많은 시간이 걸린다는 것이다. 이 성능 문제를 해결하려면 어떻게해야합니까?

감사합니다.

Monish Kumar.

답변

0

빠른 제안처럼 이름 열에 색인을 추가하면 가져 오는 속도가 빨라질 수 있습니다. 또한 필요한 것보다 더 많은 것을 가져 오지 않도록하십시오.

+0

안녕하세요, 사실 나는 데이터베이스의 색인에 대해 몰랐습니다. – monish

+0

앱이 더 빨라 졌습니까? –

+0

그래, 나는 index.ven 생각을 사용하여 시도 천천히 ...하지만 그것은 인덱스를 사용하지 전에 전에보다 빠릅니다. – monish

관련 문제