SQLite 中文指南之FAQ第5/6頁
更新時間:2008年09月12日 18:09:17 作者:
sqllite使用過程中碰到的一些問題解決,中文版
SELECT name FROM
(SELECT * FROM sqlite_master UNION ALL
SELECT * FROM sqlite_temp_master)
WHERE type='table'
ORDER BY name
(10) SQLite數(shù)據(jù)庫是否有已知的大小限制?
數(shù)據(jù)庫大小被限制在 2TB(241 bytes). 這是理論限制。事實上,你應(yīng)該把 SQLite數(shù)據(jù)庫的大小限制在100GB以下,以免出現(xiàn)運行性能上的問題。如果你需要儲存100GB或更多數(shù)據(jù)在一個數(shù)據(jù)庫中, 考慮使用為此而設(shè)計的企業(yè)版數(shù)據(jù)庫吧。
一個數(shù)據(jù)庫的理論行數(shù)限制是 264-1,顯然你會在達(dá)到行數(shù)限制之前先超過文件大小的限制。目前一行可以存放 230 bytes 數(shù)據(jù)。而基本的文件格式可以支持行大小到約 262 bytes.
可能還會有對于表、索引的數(shù)目或表和索引中的字段數(shù)的限制,但沒人知道是多少。事實上,每當(dāng)新數(shù)據(jù)庫打開時,SQLite需要讀取和 分析所有表和索引聲明的初始SQL,所以,為了調(diào)用 sqlite3_open() 時獲得最佳性能,最好減少聲明的表的數(shù)目。同樣的,即使 對于表中字段數(shù)沒有限制,多于100個也顯得太多了。 只有表開頭的31個字段會得到優(yōu)化。你可以在一個索引中放入任意多的字段但超過30字段的索引將不用于優(yōu)化查詢。
表,索引,視圖,觸發(fā)器和字段名稱可以任意長,但SQL 函數(shù)名 (由 sqlite3_create_function() API創(chuàng)建的)不得超過255個字符。
(11) 在 SQLite 中 VARCHAR 的最大長度是多少?
SQLite不強制VARCHAR的長度。你可以聲明一個VARCHAR(10),SQLite一樣可以讓你存放500個字符在里面。 并且它們會始終完整無缺——決不會被截斷。
(12) SQLite 是否支持 BLOB 類型?
SQLite 3.0 版支持在任何字段存放 BLOB 數(shù)據(jù),不管字段聲明為什么類型。
(13) 如何從一個已存在的 SQLite 數(shù)據(jù)表中添加/刪除字段?
SQLite有有限的ALTER TABLE支持,可以用于添加字段到表的末尾 或更改表名。如果你要對表的結(jié)構(gòu)作更復(fù)雜的修改,你需要重新創(chuàng)建表。你可以在一個臨時表中備份數(shù)據(jù),撤銷舊表,重建新表后再恢復(fù)數(shù)據(jù)。
例如,假設(shè)你有一個名為 "t1" 的表,有名為 "a", "b", 和 "c" 三個字段,你要刪除字段 "c" ??砂慈缦虏襟E操作:
BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;
相關(guān)文章
SQLite中的B-Tree實現(xiàn)細(xì)節(jié)分析
本文將詳細(xì)介紹SQLite中的B-Tree實現(xiàn)細(xì)節(jié),需要了解更多的朋友可以參考下2012-11-11