索引分類:
1、聚集索引:索引順序與物理順序一致。
mysql 的 innodb 中,主鍵索引就是聚集索引。好處是,進行搜尋的時候,因為索引和物理順序一致,所以找資料的時候更快。
2、非聚集索引:索引順序與物理順序不一致。
非主鍵索引。
在非主鍵索引中,又有組合索引(最左索引:也就是查詢的時候如果where條件裡面沒有最左邊的一到多列,索引就不會起作用)。
區別:由於聚集索引的有序性,因此十分適合範圍查詢。當找到相應的範圍區間,就直接獲取資料。(模擬為陣列)
由於非聚集索引的索引順序月物理儲存順序不一致,因此在查詢的時候,可能需要二次查詢。即先根據索引獲取到資料的實體地址,再根據實體地址獲取資料。(模擬為鍊錶)
什麼情況下設定了索引,但卻無法使用?
1、以 "%" 開頭的like語句,模糊匹配進行索引時。
2、or語句前後沒有同時使用索引。
3、資料庫型別出現隱式轉換,如日期型別,詳見。
優化sql:
1、語句優化,慢sql日誌與explain結合使用,分析出sql慢的原因。
2、表的優化,設定適當的冗餘字段。
20 筆記 MySQL學習 InnoDB儲存引擎
20.筆記 mysql學習 innodb儲存引擎 innodb儲存引擎是mysql的預設引擎。有幾項功能 n 其表在執行提交和回滾操作時是事務安全的。n 在系統崩潰後可以自動恢復 n 外來鍵和引用完整性支援,包括級聯刪除和更新 n 基於行級別的鎖定和多版本化 n 從mysql 5.6開始,innod...
Mysql中MyISAM與InnoDB引擎的區別
innodb mysql 5.5.5版本之後為預設儲存引擎。innodb 是乙個事務安全 與 acid 相容 的mysql儲存引擎,它具有提交 回滾和崩潰恢復功能來保護使用者資料。innodb 行級鎖 不公升級為更粗粒度的鎖 和 oracle風格的一致非鎖讀提高了多使用者併發性和效能。innodb ...
MySQL中MyISAM和InnoDB引擎的區別
區別 1.innodb支援事務,myisam不支援,對於innodb每一條sql語言都預設封裝成事務,自動提交,這樣會影響速度,所以最好把多條sql語言放在begin和commit之間,組成乙個事務 2.innodb支援外來鍵,而myisam不支援。對乙個包含外來鍵的innodb表轉為myisam會...