mysql 索引的建立原則

2021-07-30 02:40:41 字數 1306 閱讀 5108

1、索引分四類:

index ---- 普通索引,資料可以重複

fulltext ---- 全文索引,用來對大表的文字域(char,varchar,text)進行索引

unique ---- 唯一索引,要求所有記錄都唯一

primary key ---- 主鍵索引,也就是在唯一索引的基礎上相應的列必須為主鍵

2、使用索引需注意:

(1). 只對 where 和order by 需要查詢的字段設定索引,避免無意義的硬碟開銷;

(2). 組合索引支援字首索引;

(3). 更新表的時候,如增刪記錄,mysql會自動更新索引,保持樹的平衡;因此更多的索引意味著更多的維護成本

3、索引建立原則

(1). 儘量減少like,但不是絕對不可用,」***x%」 是可以用到索引的

(2). 表的主鍵、外來鍵必須有索引

(3). 誰的區分度更高(同值的最少),誰建索引,區分度的公式是count(distinct(字段))/count(*)

(4). 單錶資料太少,不適合建索引

(5). where,order by ,group by 等過濾時,後面的字段最好加上索引

(6). 如果既有單字段索引,又有這幾個欄位上的聯合索引,一般可以刪除聯合索引;

(7). 聯合索引的建立需要進行仔細分析;盡量考慮用單字段索引代替:

(8). 聯合索引: mysql 從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index(a,b,c). 可以支援 a|a,b|a,b,c 3種組合進行查詢,但不支援 b,c 進行查詢.當最左側欄位是常量引用時,索引就十分有效。

(9). 字首索引: 有時候需要索引很長的字元列,這會讓索引變得大且慢。通常可以索引開始的部分字元,這樣可以大大節約索引空間,從而提高索引效率。其缺點是不能用於order by和group by操作,也不能用於覆蓋索引 covering index(即當索引本身包含查詢所需全部資料時,不再訪問資料檔案本身)。

(10). null會導致索引形同虛設

4、禁用索引

- like 「 %*** 」

- not in , !=

- 對列進行函式運算的情況(如 where md5(password) = 「***x」)

- where index=1 or a=10

- 存了數值的字串型別字段(如手機號),查詢時記得不要丟掉值的引號,否則無法用到該欄位相關索引,反之則沒關係

MySql 建立索引原則

為了使索引的使用效率更高,在建立索引時,必須考慮在哪些欄位上建立索引和建立什麼型別的索引。本小節將向讀者介紹一些索引的設計原則。1 選擇唯一性索引 唯一性索引的值是唯一的,可以更快速的通過該索引來確定某條記錄。例如,學生表中學號是具有唯一性的字段。為該字段建立唯一性索引可以很快的確定某個學生的資訊。...

Mysql索引建立原則

在mysql中使用索引的原則有以下幾點 1 對於查詢頻率高的字段建立索引 2 對排序 分組 聯合查詢頻率高的字段建立索引 3 索引的數目不宜太多 原因 a 每建立乙個索引都會占用相應的物理控制項 b 過多的索引會導致insert update delete語句的執行效率降低 4 若在實際中,需要將多...

MySQL索引建立原則

索引的目的是提公升查詢資料的效率,所以我們建索引的標準應該一切從提公升查詢效率為基準。對於有唯一值的列盡量使用唯一索引 索引長度盡量小一點,長度小的索引可以節省索引空間,也會使查詢的速度得到提公升,因為索引頁只有16k,索引列長度小的話,一頁可以容納更多的資料 太長的列可以選擇部分內容做索引,遵循最...