我有一個映射表,它基本上將一個表的主鍵映射到另一個表的主鍵(以及其他一些列)。這兩個引用主鍵的列上都有索引。依賴於rowid而不是_id主鍵(SQLite)的優點/缺點
我想知道是否需要映射表的_id主鍵。在查詢中,我可以簡單地引用rowid而不是_id。 FWIW,數據庫在創建後未被修改。
創建_id列有什麼優點?
我有一個映射表,它基本上將一個表的主鍵映射到另一個表的主鍵(以及其他一些列)。這兩個引用主鍵的列上都有索引。依賴於rowid而不是_id主鍵(SQLite)的優點/缺點
我想知道是否需要映射表的_id主鍵。在查詢中,我可以簡單地引用rowid而不是_id。 FWIW,數據庫在創建後未被修改。
創建_id列有什麼優點?
Android框架的許多部分期待您的查詢返回稱爲_id
獨特的整數列。
如果映射表的內容從不在此類Android組件中顯示(例如,在列表視圖中查找這兩個名稱並顯示name1/name2映射),則不需要它。
然而,(almost)所有表都具有內部rowid
,所以它不會傷害到明確聲明它爲_id
,特別是如果你不知道,如果你也許需要它。
將其稱爲rowid
並不總是一個好主意,因爲沒有明確的列,its value might change。
關於VACUUM潛在改變rowid的優點。我不知道。據推測,它不會改變行的順序。無論如何,我希望不會! – techehcet
如果_id是主鍵和整數類型,則它將成爲別名rowid。
所以沒有太大的區別。
雖然它可能是不方便插入到包括的rowid:INSERT INTO test1(rowid, a, b) VALUES(123, 5, 'hello');
(From sqlite.org)
不要求缺點,而不要求浪費空間。你會設想用它來訪問一行或多行(可能不是)?一個好處是如果使用遊標適配器,就像遊標適配器需要_id列(很容易繞過)一樣,想不出其他任何東西。關於插入的 – MikeT