2015-02-03

sqlite 最佳化 & 數據類型 & PRIMARY KEY & FOREIGN KEY

http://www.sqlite.com.cn/MySqlite/4/289.Html

PRAGMA auto_vacuum; 自動清理刪除資料 (效率低,關掉)

PRAGMA cache_size; 記憶體快取 (越高效率越好)

PRAGMA page_size; 系統分頁值

PRAGMA case_sensitive_like; 比對字串時,大小寫區分

PRAGMA count_changes; 就是affected_rows的意思

PRAGMA synchronous; 資料同步 (如:斷電時,資料如何處理,off最快)

PRAGMA temp_store = MEMORY; (將索引放在記憶體)

SQLITE:
http://www.sqlite.org/lang_transaction.html
大量寫入時,先START TRANSACTION,
中間有寫入失敗就ROLLBACK TRANSACTION (包含前面執行成功的都會清除)
最後再COMMIT 或 END TRANSACTION (可避免造成磁區破碎分散區塊)

========
數據類型
http://blog.csdn.net/sunboy_2050/article/details/6665024
========
http://blog.csdn.net/sunboy_2050/article/details/6665024
大小寫比對:

方案一:使用大小寫轉換函數LOWER、UPPER
SELECT * FROM [User] WHERE LOWER(UserName) = 'user1'
方案二:在進行比較時強制聲明不區分大小寫
SELECT * FROM [User] WHERE UserName = 'user1' COLLATE NOCASE
方案三:創建表時聲明該字段不區分大小寫
CREATE TABLE [User] ( [UserName] NVARCHAR(20) COLLATE NOCASE );

====
http://www.phpker.com/mysql-and-the-initial-value-sqlite-reset-auto_increment/610.html

SQLITE AUTO_INCREMENT 復位:
DELETE FROM sqlite_sequence WHERE name = 'your_table_name'

========
sqlite可以設成二種primary key (一定要是INTEGER型態,不可用INT)

1. [id] INTEGER NOT NULL PRIMARY KEY, # 會自動依資料表中最大的再+1

2.[id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, #會自動依sequence加,而不管最大值為何

FOREIGN KEY:
http://www.sqlite.org/foreignkeys.html

沒有留言:

張貼留言