索引可以加快大資料量的查詢速度,索引本質上也是一張表儲存主鍵和索引字段,並指向實體表的記錄,因此如果濫用索引可能會導致更新資料的速度降低,因為mysql不僅僅需要儲存資料還要儲存索引,索引分為單列索引和組合索引,單列索引只一張表多個列單獨為索引,組合索引是乙個索引包含多個列。mysql資料庫多為b+tree來實現索引
關於組合索引的最佳左字首法則,組合索引在引用的時候,不能中斷,不能沒有最左側索引。例子乙個名為idx的索引包涵name(a) age(b) msg(c)三個字段。
索引失效的幾種情況:
在索引上做任何操作(計算,函式,自動或者手動的型別轉換)會導致索引失效轉為全表掃瞄
在使用不等於符號(!=),會導致索引失效。
字串不加單引號也會導致索引失效(猜測為自動的型別轉換)
使用or作為條件鏈結也會有可能導致失效
建立索引
create index indexname on tablename(column_name)
create index idx_nameagepos on staff(name, age, pos);
修改表結構(新增索引)
alter table tablename add index
刪除索引
drop index [indexname] on mytable;
關於:explain
explain 是mysql裡查詢語句是否使用了索引 是否使用了全域性掃瞄一般用於優化sql語句。
mysql索引了解一下
索引是mysql中非常重要的知識,類似於書籍的目錄,可以提高檢索效率,降低資料庫的io成本。本文主要介紹最常用的b tree索引。b tree索引結構見上圖。最底下的是葉子節點,上層是非葉子節點。非葉子節點中存放鍵值和指向下層的指標 葉子節點存放鍵值和資料,存放的資料根據實現的不同而不同。例如 可以...
mysql覆蓋索引優化記錄一下
create table employees id int 11 notnull auto increment name varchar 24 not null default comment 姓名 age int 11 notnull default 0 comment 年齡 position v...
介紹一下索引
根據資料庫的功能,可以在 資料庫設計器中建立四種索引 普通索引 唯一索引 主鍵索引和 聚集索引。有關資料庫所支援的索引功能的詳細資訊,請參見資料庫文件。普通索引 這是最基本的索引型別,而且它沒有唯一性之類的限制。普通索引可以通過以下幾種方式建立 建立索引,例如create index 索引的名字 o...