0

デバイスでアプリケーションをビルドすると、パフォーマンスの問題が発生します。それは実際に私のデータベースにあります。2114 のワイン名があるワインの詳細の表があります。これらすべてのワイン名を取得するために、次のコードを に書きましたappDelegate

-(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テーブルビューにワイン名を表示する必要がある別のコントローラーでこのメソッドを呼び出しています。

viewWillAppearコード:

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

ここでの問題は、デバイスでビルドすると、データベース内のデータの量が原因で、コントローラーに移動するのに時間がかかりすぎることです。このパフォーマンスの問題を解決するにはどうすればよいですか?

ありがとう、

モニシュ・クマール。

4

1 に答える 1

0

簡単な提案として、名前列にインデックスを追加すると、フェッチが高速化される可能性があります。また、必要以上のものを取得していないことを確認してください。

于 2010-02-01T10:21:21.637 に答える