亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何禁用rowid優化SQLite數據庫

發布時間:2020-06-03 11:31:23 來源:億速云 閱讀:860 作者:Leah 欄目:數據庫

如何禁用rowid優化SQLite數據庫?相信大部分人都還沒學會這個技能,為了讓大家學會,給大家總結了以下內容,話不多說,一起往下看吧。

 
1.0介紹
默認情況下,SQLite數據庫中的每一行都會有一個叫做rowid的特殊列,該列唯一標識數據庫表中的某一行。然而如果在CREATE TABLE語句的后面添加WITHOUT ROWID關鍵字,就會禁用rowid這一列。有時候省略掉rowid,能夠帶來空間和性能上的提升。
1.1 語法
現在創建一個WITHOUT ROWID的表,最直接的方式就是在CREATE TABLE 語句之后添加關鍵字WITHOUT ROWID.例如:
CREATE TABLE IF NOT EXISTS wordcount(
  word TEXT PRIMARY KEY,
  cnt INTEGER
) WITHOUT ROWID;
如其他所有的SQL語法一樣,關鍵字的大小寫不敏感。如下的任何一種方式都可以接受:
WITHOUT rowid , withoutrowid , WIThOut rOwId .她們代表一個意思。
 
注意:如果表指定了WITHOUT ROWID屬性,表必須指定PRIMARY KEY。否則創建表的時候,會返回錯誤,錯誤的大體意思是指定WITHOUT ROWID的創建表語句缺少PRIMARY KEY。
 
大多數情況下,rowid和oid或者_rowid_代表一個意思。然而只有rowid才可以出現在創建表的語句當中。
 
1.2兼容性
只有SQLite 3.8.2版本之后的程序才可以使用WITHOUT ROWID關鍵字。早期版本的SQLite打開攜帶WITHOUT ROWID屬性的表,將會返回一個malformed database schema 的錯誤。
 
1.3 Quirks(特殊性)
迄今為止,WITHOUT ROWID 只能夠被SQLite數據庫使用,其他的數據庫引擎并沒有兼容該關鍵字。在正統的系統中,即使沒有WITHOUT ROWID關鍵字,所有的表也應該表現的和WITHOUT ROWID的效果一樣。然而,SQLite在一開始被設計的時候,就采用整型的ROWID來簡化實現的方式。這種方法表現很好很多年了。但是隨著SQLite的需求的增長,(the need for tables in which the PRIMARY KEY really did correspondto the underlying row key grew more acute)對于表指定PRIMARY KEY屬性變得更加迫切,因此和rowkey的矛盾更加尖銳。為了兼容過去的已經被使用了很久很久的程序,因此without rowid的概念終于被添加到SQLite中,(The WITHOUT ROWID concept was added in order to meet that needwithout breaking backwards compatibility with the billions of SQLite databasesalready in use at the time (circa 2013).)
為了無縫的兼容過去成千上萬的程序,WITHOUT ROWID的概念被添加到SQLite中。
2.0 與攜帶Rowid表不同之處
WITHOUT ROWID是一個優化選項。她沒有提供任何新的特性(capablilities).操作攜帶ROWID表和操作不攜帶ROWID的表,使用的都是相同的語法。唯一的優點是節省磁盤空間,并且比普通的表快一些。
 
多數情況下,攜帶rowid表和不攜帶rowid表是可以互換的(interchangeable).但是WITHOUT ROWID表存在一些限制,而這些限制是普通的rowid表不具備的。
 
1.指定了WITHOUT ROWID的表必須指定PRIMARYKEY, 否則建表失敗
2指定了WITHOUT ROWID的表不能夠指定INTEGERPRIMARY KEY。In an ordinary table, "INTEGER PRIMARY KEY" means that thecolumn is an alias for the rowid. But since there is no rowid in a WITHOUTROWID table, that special meaning no longer applies. An "INTEGER PRIMARYKEY" column in a WITHOUT ROWID table works like an "INT PRIMARYKEY" column in an ordinary table: It is a PRIMARY KEY that has integeraffinity.
3 指定了WITHOUT ROWID的表不能使用AUTOINCREMENT關鍵字

關于禁用rowid優化SQLite數據庫的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果喜歡這篇文章,不如把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

射洪县| 泰兴市| 连南| 积石山| 弥勒县| 辽阳县| 宁阳县| 于都县| 九江市| 舒兰市| 库伦旗| 蒙自县| 永嘉县| 宣恩县| 临汾市| 门源| 新巴尔虎右旗| 从江县| 珲春市| 闽侯县| 江北区| 东城区| 海盐县| 工布江达县| 石家庄市| 辽阳市| 商都县| 冀州市| 灌南县| 东乡县| 长宁区| 双江| 永仁县| 谷城县| 依兰县| 教育| 白朗县| 修武县| 石嘴山市| 德钦县| 朝阳区|