1. MyISAM 和 InnoDB 存儲引擎特點
① MyISAM
表結構,數據,索引分別有對應的存儲文件
寫入數據快,按照自然順序寫入數據
數據穩定後可以壓縮數據信息
支持全文索引
併發性: 較低,鎖表操作
② InnoDB:
表結構有單獨的存儲文件,數據和索引共享統一個存儲文件(ibdata1、*.ibd)
ibdata1 是全部innnodb表的數據和索引的存儲文件
*.ibd是每個innodb表的數據和索引存儲文件
支持事務和外鍵
併發性較好,行鎖(操作數據表時鎖定操作記錄)
Mysql5.6後InnoDB支持全文索引
2. 字段類型的選擇
① 給數據分配的空間儘量要小一點(tinyint, smallint, mediumint, int, bigint)
時間: datetime, date, year, time, timestamp(1970年往後的信息)
② 數據確定長度的儘量用char,整合爲固定長度的信息
③ 數據最好變爲整型信息存儲(set, enum, 時間戳, ip地址)
3. 逆範式(有時需要違背數據庫設計的三範式原則)
爲了查詢快
4. 索引:
就是把數據表的某個字段獲取出來,該字段作爲關鍵字和記錄物理地址進行對應,以便快速定位記錄信息
(索引內部有算法可以快速定位信息)
類型:主鍵索引(primary key), 唯一索引(unique key), 普通索引(key), 全文索引(fulltext key)
增加和刪除索引:
增加: 在表創建的時候添加
追加:
① alter table 表名 add primary key (字段名);
② alter table 表名 add unique index [名稱] (字段名)
③ aleter table 表名 add index [名稱](字段名)
④ alter table 表名 add fulltext index [名稱] (字段名);
刪除:alter table 表名 drop 索引類型 (索引名稱);
執行計劃(針對查詢語句起作用) explain
作用: 查詢語句在沒有執行之前查看該執行語句消耗資源情況,是否使用索引
索引使用場合:
where,order by, 索引覆蓋(複合索引), 鏈接查詢
索引使用原則:
列獨立原則, 左原則(模糊查詢), 複合索引, OR原則