5

私は次の線に沿って何かをしようとしています:

SELECT bytes from user_segments where segment_name = 'TABLE_NAME';

データベース全体のサイズを取得できることはわかっています。

mDb = SQLiteDatabase;
long size = new File(mDb.getPath()).length();

AndroidのSQLiteDatabaseのストレージで個々のテーブルが占めるスペースを取得することは可能ですか?

編集 -

応答がないため、SQLiteでは不可能だと思います。私は現在、テーブル内の行数をカウントし、(指定されたテーブルスキーマに基づいて)1つの行に必要なスペースを見積もるハック風の方法を使用しています。

4

1 に答える 1

3

バイナリ データまたは文字列データを主に 1 つの列に格納する場合は、集計クエリを使用できます。

SELECT SUM(LENGTH(the_column)) FROM the_table

これにより、各行のサイズが大きく異なる場合でも (たとえば、データベースに画像を保存する場合)、妥当な見積もりを得ることができます。ただし、それぞれに少量のデータを含む列が多数ある場合は、アプローチ (行ごとに固定サイズを見積もる) の方が適しています。

Android では、次のように実装できます。

SQLiteDatabase database = ... // your database
// you can cache the statement below if you're using it multiple times
SQLiteStatement byteStatement = database.compileStatement("SELECT SUM(LENGTH(the_column)) FROM the_table");
long bytes = byteStatement.simpleQueryForLong();
于 2012-10-11T15:02:33.907 に答える