資料庫優化應從三方面來考慮:資料庫儲存分割槽、表索引、sql語句優化
今天這篇部落格主要是介紹表索引:
建立索引原則:
頻繁搜尋的列
經常排序的列
經常連線的列
指定單獨的表空間
不適合建立索引原則:
表資料量小
僅包含幾個不同值的列(如:性別)
增刪改資料表操作頻繁
增刪改效能要求高於查詢
表中匯入資料後再建立索引。否則每次表中插入資料時都必須更新索引
在適當的表和字段中建立索引。如果經常檢索的資料少於表中資料的15%,則需要建立索引
限制表中索引數目。索引越多,在修改表時,對索引做出修改的工作量越大(同時索引也是佔空間的)
b-tree索引(又叫「普通索引」)
使用方式:適合創立在重複值比較少的列上,如:姓名。
分析:先走索引,找到rowid(乙個偽列),根據rowid查出資料(這個效率會搞很多)
語法:create index 索引名 on 表名(列名)
唯一索引
使用方式:適合在值唯一的字段,如:身份證(主鍵約束、唯一約束缺省會新增唯一約束)
語法:create unique index 索引名 on 表名(列名)
位圖索引
使用方式:適合在大量相同值。(如:部門編號,工作類別)
語法:create bitmap index 索引名 on 表名(列名)
反向索引
使用方式:適用在儲存類似序列的值的列上,目的防止某個資料塊訪問過熱(如何批量插入)
語法:create index 索引名 on 表名(列名) reverse
組合索引
使用方式:經常作為組合條件的多個列(也可分開建成位圖索引)
語法:create bitmap index 索引名 on 表名(列名,列名,…)
函式索引
使用方式:適用在經常使用函式的列上
語法:create index 索引名 on 表名(函式(列名))
關於SQLite資料庫的那點事
1.sqlite屬於輕型的資料庫,事物有四種屬性,原子性,一致性,隔離性,永續性。2.在進行建立資料庫時候採用繼承sqliteopenhelper,然後實現其中的方法,在databasehelper方法中factory方法可以為null 3.在oncreate方法中執行sql語句建立資料庫。4.資料...
資料庫那點事 Mysql 3
語句賞析 create table group id int primary key auto increment,name varchar 10 not null,max size int default 10 type varchar 10 not null check type in 研發組 ...
laravel和資料庫的那點事2
增刪改查 新增資料 使用db門面的insert方法執行插入語句。和select一樣,改方法將原生sql語句作為第乙個引數,將繫結作為第二個引數 db insert insert into users id,name values 1,dayle 修改資料 update方法用於更新資料庫中已存在的記錄...