ノーROWIDの最適化(ROWID最適化なし)

抜粋:https://www.sqlite.org/withoutrowid.html#wtu

 
1.0はじめに
デフォルトでは、SQLiteのデータベースの各行は、特殊な列が行IDが一意にその列データベーステーブル内の行を識別する呼びました。あなたは、CREATE TABLE文の後ROWIDキーワードを指定せずに追加する場合は、これはROWID列を無効にします。時には、ROWIDを省略、それはスペースとパフォーマンスを向上させるために持って来ることができます。
1.1構文は
今ROWIDテーブルなし作成する、最も直接的な方法は、:.など、CREATE TABLE文の後ROWIDなしのキーワードを追加することで
はありませんが(EXISTS語数のIFのCREATE TABLE
  のWord TEXT PRIMARY KEY、
  CNT INTEGERを
ROWIDなし);
他のすべてのようSQL構文のように、キーワードは大文字と小文字を区別しません。次の方法のいずれかが許容されている:
ROWIDなし、withoutrowid、彼らは意味を表すROWIDなし。
 
注意:テーブルがROWID属性テーブルなしで指定されている場合は、PRIMARY KEYを指定する必要があります。そうでなければ、あなたがテーブルを作成するときに、エラーを返し、エラーが一般的にROWIDなし指定がtable文を作成することを意味PRIMARY KEYを欠いています。
 
意味の代わりに、多くの場合、ROWIDおよびOIDまたは_ROWID_。しかし、唯一のROWIDは間テーブル作成文で表示されます。
 
1.2互換性
プログラムのSQLiteの3.8.2バージョンのみROWIDキーワードを指定せずに使用することができた後にのみ。ROWID属性テーブルなしSQLiteのオープンキャリーの以前のバージョンでは、不正な形式のデータベーススキーマのエラーを返します。
 
1.3に関する注意点(特殊)
ROWID WITHOUT今日までは、唯一のSQLiteデータベースを使用することができ、他のデータベースエンジンは、キーワードと互換性がありません。オーソドックスなシステムでは、さえROWIDキーワードを指定せずにせずに、すべてのテーブルは、同じROWIDなしの性能と有効する必要があります。しかし、初めにSQLiteのは、実装の方法を簡素化するためにROWID整数の使用に設計されました。この方法は、長年にわたって良好に動作します。しかし、SQLiteのための需要の増加、(ここで、テーブルの必要性と基本的な行キーはより深刻に成長correspondto PRIMARY KEYが本当にやった) テーブルのPRIMARY KEY属性がより緊急、そのためのrowKey矛盾が深刻になって指定します。WITHOUT ROWIDの概念が追加されました(、過去との互換性のためには、プログラムの中で長時間使用されてきたので、コンセプトのROWIDなしで最後にSQLiteのに追加された時に、使用中のSQLite databasesalready数十億との下位互換性を壊すことneedwithoutを満たすために時間(2013年頃)。)
ROWIDの概念なし過去の番組の何千ものシームレスな互換性のためには、SQLiteのに追加されます。
2.0とROWIDので異なるテーブルを運ぶ
ROWIDなしには、最適化オプションです。彼女はどんな新機能(capablilities)を提供していませんでした。ROWID手術台と手術台のキャリーは、ROWIDを運ばない、彼らは同じ構文を使用しています。唯一の利点は、ディスクスペースを節約することで、通常のテーブルよりも高速です。
 
ほとんどの場合、持ち運びやテーブルがROWIDテーブルは交換可能(交換可能)されているのROWID運ぶ。しかし、ROWIDテーブルWITHOUTいくつかの制限がありますが、これらの制限は、共通のROWIDテーブルが持っていないですしないでください。
 
1. ROWID WITHOUT表はPRIMARYKEYを指定するか、またはテーブルの構築に失敗しなければなりません指定
INTEGERPRIMARY KEYを指定することはできませんROWIDテーブルなし2を指定します。通常のテーブルでは、「INTEGER PRIMARY KEYは」thecolumnがROWIDの別名である。しかし、ことを意味WITHOUTROWID表にはROWID、特別な意味はなくなりました。アンROWIDテーブルの動作なしで「INTEGER PRIMARYKEY」の欄を適用されることはありませんので、 表中の普通の列「INT PRIMARY KEY」のような:.それはintegeraffinityている主キーで
ROWIDテーブルなし3指定がAUTOINCREMENTキーワードを使用することはできません

おすすめ

転載: blog.51cto.com/fengyuzaitu/2429647