私は基本的に1つのテーブルのプライマリキーを別のテーブルのプライマリキー(および他のいくつかのカラム)にマッピングするマッピングテーブルを持っています。主キーを参照する両方の列には索引があります。主キー(SQLite)の代わりにROWIDに頼ることの短所
マッピングテーブルに_id主キーが必要かどうかと思います。クエリでは、単に_idの代わりにROWIDを参照することができます。 FWIWでは、データベースは作成後に変更されません。
_id列を作成する利点は何ですか?
私は基本的に1つのテーブルのプライマリキーを別のテーブルのプライマリキー(および他のいくつかのカラム)にマッピングするマッピングテーブルを持っています。主キーを参照する両方の列には索引があります。主キー(SQLite)の代わりにROWIDに頼ることの短所
マッピングテーブルに_id主キーが必要かどうかと思います。クエリでは、単に_idの代わりにROWIDを参照することができます。 FWIWでは、データベースは作成後に変更されません。
_id列を作成する利点は何ですか?
多くの部分クエリが_id
と呼ばれるユニークな整数列を返すことを期待しています。
このようなAndroidコンポーネントにマッピングテーブルの内容が表示されない場合(たとえば、両方の名前を検索し、リストビューでname1/name2マッピングを表示している場合)、その必要はありません。
ただし、(almost)すべてのテーブルにはrowid
という内部テーブルがあるため、特に必要な場合があるかどうかわからない場合は、明示的に_id
と宣言することは害です。
rowid
と指定すると、明示的な列がないと、its value might changeが表示されないので、必ずしも良いとは限りません。
潜在的にRUIDを変更するVACUUMに関する優れた点。私はそれを知らなかった。おそらくそれは行の順序を変更しないだろう。私はとにかく願っていません! – techehcet
_idがプライマリキーで整数型の場合、rowidのエイリアスになります。
だから大きな違いはありません。
インサート中のROWID含めるためには不便かもしれないけれども:AndroidのフレームワークのINSERT INTO test1(rowid, a, b) VALUES(123, 5, 'hello');
(From sqlite.org)
ディザアダント、althouhgは頼まれていない、無駄なスペースです。行や行にアクセスするためにそれを使用することを想像してみませんか? 1の利点は、カーソルアダプタが_idカラムを必要とする(簡単に回避される)ように、カーソルアダプタを使用する場合に他のものを考えることができないことである。挿入に関して – MikeT