私の SQLiteAdapter
クラス内には、Android アプリケーション用に次のメソッドがあります。キーKEY_WAS
は 0 または 1 のいずれかです。このメソッドは、データベース内name
で指定date
されたものと指定されたものを検索します (特定の日付について、DB 内の特定の名前に対する一意のエントリは 1 つだけです)。したがって、そのようなエントリが存在する場合は の中に入りif
、そうでない場合was
は 0 のままです。最後に、was
返されます。
public int wasHere(String name, String date) throws SQLException {
Log.d("wasHere", "begins, date = " + date);
Cursor c = ourDatabase.query(DATABASE_TABLE, ALL_KEYS, KEY_NAME
+ "=" + "'" + name + "'" + " AND " + KEY_DATE + "=" + "'"
+ date + "'", null, null, null, null);
Log.d("wasHere", "below Cursor");
int was = 0;
if(c.moveToFirst()) {
Log.d("wasHere", "inside IF");
was = c.getInt(c.getColumnIndex(KEY_WAS));
}
Lod.d("wasHere", "ends");
return was;
}
ログエントリから、いくつかの特定のものを貼り付けています (「開始」と「終了」の間の時間は、呼び出しているループに依存するため、無視できますwasHere
):
07-18 07:08:03.398: D/dbwas(29568): begins, date = 08 Aug 2013
07-18 07:08:03.398: D/dbwas(29568): below cursor
07-18 07:08:03.398: D/dbwas(29568): ends
07-18 07:08:03.398: D/dbwas(29568): begins, date = 09 Aug 2013
07-18 07:08:03.406: D/dbwas(29568): below cursor
07-18 07:08:03.406: D/dbwas(29568): ends
07-18 07:08:03.359: D/dbwas(29568): begins, date = 02 Aug 2013
07-18 07:08:03.359: D/dbwas(29568): below cursor
07-18 07:08:03.367: D/dbwas(29568): inside IF
07-18 07:08:03.367: D/dbwas(29568): ends
07-18 07:08:03.367: D/dbwas(29568): begins, date = 03 Aug 2013
07-18 07:08:03.367: D/dbwas(29568): below cursor
07-18 07:08:03.375: D/dbwas(29568): inside IF
07-18 07:08:03.375: D/dbwas(29568): ends
07-18 07:08:03.430: D/dbwas(29568): begins, date = 14 Aug 2013
07-18 07:08:03.430: D/dbwas(29568): below cursor
07-18 07:08:03.430: D/dbwas(29568): inside IF
07-18 07:08:03.430: D/dbwas(29568): ends
私の質問は、「開始」と「終了」のログ時間に関するものです。上記のように、5 つのログ エントリのうち 2 つ (8 月 8 日と 8 月 14 日) は、"begins, date = ..." から "ends" までの時間が 0 です。
9 AugCursor
では、ステートメントの実行に 8 ミリ秒 (.008 秒) かかります。
2 Augと3 Augif
では、ステートメントの実行に 8 ミリ秒 (.008 秒) かかります。
8 月 14 日、上記の 2 つのステートメントのいずれかを実行するのに時間がかかりません。
同様に、「ログ」にもそのような矛盾がたくさんあります。さまざまな日付の場合、Cursor
andif
ステートメントはランダムに 8 ミリ秒かかります (そして、時間は常に 8 ミリ秒です)。
現在、「wasHere」メソッドを何百回も実行しているため、数百 8 ミリ秒の時間がかかりすぎます。上記の不一致がランダムに発生するのはなぜですか。そして、それを削除する方法はありますか(または、私がしていることを行う別の方法かもしれません)。[8 月 8 日と 8 月 14 日のステートメントは、当然のことながら時間がかかりません。]