MySql在建立索引優化時需要注意的問題

2022-04-23 05:29:28 字數 1356 閱讀 4512

設計好mysql的索引可以讓你的資料庫飛起來,大大的提高資料庫效率。設計mysql索引的時候有一下幾點注意:

1,建立索引

對於查詢佔主要的應用來說,索引顯得尤為重要。很多時候效能問題很簡單的就是因為我們忘了新增索引而造成的,或者說沒有新增更為有效的索引導致。如果不加

索引的話,那麼查詢任何哪怕只是一條特定的資料都會進行一次全表掃瞄,如果一張表的資料量很大而符合條件的結果又很少,那麼不加索引會引起致命的效能下

降。但是也不是什麼情況都非得建索引不可,比如性別可能就只有兩個值,建索引不僅沒什麼優勢,還會影響到更新速度,這被稱為過度索引。

2,復合索引

比如有一條語句是這樣的:select * from users where area=』beijing』 and age=22;

如果我們是在area和age上分別建立單個索引的話,由於mysql查詢每次只能使用乙個索引,所以雖然這樣已經相對不做索引時全表掃瞄提高了很多效

率,但是如果在area、age兩列上建立復合索引的話將帶來更高的效率。**如果我們建立了(area, age,

salary)的復合索引,那麼其實相當於建立了(area,age,salary)、(area,age)、(area)三個索引,這被稱為最佳左字首

特性。**

** 因此我們在建立復合索引時應該將最常用作限制條件的列放在最左邊,依次遞減。**

3,索引不會包含有null值的列

只要列中包含有null值都將不會被包含在索引中,復合索引中只要有一列含有null值,那麼這一列對於此復合索引就是無效的。所以我們在資料庫設計時不要讓字段的預設值為null。

4,使用短索引

對串列進行索引,如果可能應該指定乙個字首長度。例如,如果有乙個char(255)的 列,如果在前10 個或20 個字元內,多數值是惟一的,那麼就不要對整個列進行索引。短索引不僅可以提高查詢速度而且可以節省磁碟空間和i/o操作。

5,排序的索引問題

mysql查詢只使用乙個索引,因此如果where子句中已經使用了索引的話,那麼order by中的列是不會使用索引的。因此資料庫預設排序可以符合要求的情況下不要使用排序操作;盡量不要包含多個列的排序,如果需要最好給這些列建立復合索引。

6,like語句操作

一般情況下不鼓勵使用like操作,如果非使用不可,如何使用也是乙個問題。like 「%aaa%」 不會使用索引而like 「aaa%」可以使用索引。

7,不要在列上進行運算

select * from users where

year(adddate)

8,不使用not in和操作

not in和操作都不會使用索引將進行全表掃瞄。not in可以not exists代替,id3則可使用id>3 or id

reference :

MySql在建立索引優化時需要

mysql在建立索引優化時需要注意的問題 檀健飛 表的主關鍵字 自動建立唯一索引 如zl yhjbqk 使用者基本情況 中的hbs bh 戶標識編號 表的字段唯一約束 oracle利用索引來保證 資料的完整性 如lc hj 流程環節 中的lc bh hj sx 流程編號 環節順序 直接條件查詢的字段...

總結 MySql在建立索引優化時需要注意的問題

from 1,建立索引 不是什麼情況都非得建索引不可,比如性別可能就只有兩個值,建索引不僅沒什麼優勢,還會影響到更新速度,這被稱為過度索引。2,復合索引 比如有一條語句是這樣的 select from users where area beijing and age 22 如果我們是在area和ag...

MySql在建立索引優化時需要注意的問題

設計好mysql的索引可以讓你的資料庫飛起來,大大的提高資料庫效率。設計mysql索引的時候有一下幾點注意 1,建立索引 對於查詢佔主要的應用來說,索引顯得尤為重要。很多時候效能問題很簡單的就是因為我們忘了新增索引而造成的,或者說沒有新增更為有效的索引導致。如果不加 索引的話,那麼查詢任何哪怕只是一...