MySQL進階之索引

2022-09-23 00:42:48 字數 586 閱讀 7420

資料庫查詢是資料庫的最主要的功能之一,資料庫系統的設計者從查詢演算法的角度對資料庫進行了一定的優化。

最基本的順序查詢演算法的複雜度為o(n),在資料量很大的時候演算法的效率是很低的。雖然也有一些更優秀的查詢演算法:二分查詢、二叉樹查詢,但這些演算法都只能應用在特定的資料結構之上,如二分查詢要求被檢索資料本身是有序的、二叉查詢則只能應用在二叉查詢樹上。但資料本身的組織結構不可能完全滿足各種資料結構。

因此,在資料之外,資料庫系統還維護這滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用(指向)資料。這樣就可以在這些資料結構之上實現高階查詢演算法。這種資料結構,就是索引。

比較頻繁的作為查詢條件的欄位應該建立索引

唯一性太差的欄位不適合單獨創

建索引,即使頻繁作為查詢條件

更新非常頻繁的欄位不適合建立索引

不會出現在where子句中的欄位不該建立索引

索引能極大提高資料檢索的效率,但有一個不能忽略的問題是,索引是完全獨立於基礎資料之外的一部分資料——也就是索引要佔據額外的儲存空間。

另外,資料庫還要騰出部分開銷用於維護索引。索引雖然能增加查詢的效率,但是降低了其他操作的效率。資料表有變化影響到索引時,資料庫也必須隨時調整索引。

mysql之索引

檢視索引 刪除索引 首發日期 2018 04 14 在現有表結構的情況下增加索引 create index 索引名 on 表名 欄位 索引的...

mysql 索引之單列索引和組合索引

前幾天老大叫我做了下索引優化,故將學到的東西記錄下來。 組合索引,多個列組合的索引。重點是理解最左字首的原則。 若有組合索引 a,b,c ,那麼根據最左字首,資料庫成立了三個索引 a a,b a,b,c , 重點 這裡可以看出n個列的組合索引,實際新建的普通 索引是n個, 索引的列數是n n 1 2...

MySQL索引之字首索引和索引選擇性

有時需要索引很長的字元列,它會使索引變大而且變慢。一個策略就是模擬雜湊索引。但是有時這也不夠好,那? 通常可以索引開始的幾個字元,而不是全部值,以節約空間並得到好的效能。這使索引需要的空間變小,但是也會降低選擇性。索引選擇性是不重複的索引值 和表中所有行的比值。高選擇性的索引有好處,因為它使mysq...