Mysql的索引應該怎麼建立

2021-10-23 13:27:20 字數 1845 閱讀 2763

1.主鍵自動建立唯一索引 對於單鍵索引,盡量選擇針對當前query過濾性更好的索引

2.頻繁作為查詢條件的字段應該建立索引(where 後面的語句)

3.查詢中與其它表關聯的字段,外來鍵關係建立索引

4.在高併發下傾向建立組合索引,

在選擇組合索引的時候,當前query中過濾性最好的字段在索引字段順序中,位置越靠前越好。(避免索引過濾性好的索引失效)

在選擇組合索引的時候,盡量選擇可以能夠包含當前query中的where字句中更多字段的索引

5.查詢中排序的字段,排序欄位若通過索引去訪問將大大提高排序速度

6.查詢中統計或者分組字段

1.最左字首匹配原則,非常重要的原則,mysql會一直向右匹配直到遇到範圍查詢(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4如果建立(a,b,c,d)順序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引則都可以用到,a,b,d的順序可以任意調整。

2.=和in可以亂序,比如a = 1 and b = 2 and c = 3建立(a,b,c)索引可以任意順序,mysql的查詢優化器會幫你優化成索引可以識別的形式

3.盡量選擇區分度高的列作為索引,區分度的公式是count(distinct col)/count(*),表示欄位不重複的比例,比例越大我們掃瞄的記錄數越少,唯一鍵的區分度是1,而一些狀態、性別字段可能在大資料面前區分度就是0,那可能有人會問,這個比例有什麼經驗值嗎?使用場景不同,這個值也很難確定,一般需要join的字段我們都要求是0.1以上,即平均1條掃瞄10條記錄

4.索引列不能參與計算,保持列「乾淨」,比如from_unixtime(create_time) = 』2014-05-29』就不能使用到索引,原因很簡單,b+樹中存的都是資料表中的字段值,但進行檢索時,需要把所有元素都應用函式才能比較,顯然成本太大。所以語句應該寫成create_time = unix_timestamp(』2014-05-29』);

5.盡量的擴充套件索引,不要新建索引。比如表中已經有a的索引,現在要加(a,b)的索引,那麼只需要修改原來的索引即可

6.合計設計索引,**邏輯圍繞索引實現。避免重複索引,關鍵表控制索參數量,不要超過5個

7.索引字段定義要注意訪問頻繁高的字段放前面

全值匹配我最愛,最左字首要遵守;

帶頭大哥不能死,中間兄弟不能斷;

索引列上少計算,範圍之後全失效;

like百分寫最右,覆蓋索引不寫*星;

不等非空還有or,索引失效要少用;

var引號不可丟,sql高階也不難!

1.表記錄太少

2.經常增刪改的表:why:提高了查詢速度,同時卻會降低更新表的速度,如對表進行insert、update和delete。

因為更新表時,mysql不僅要儲存資料,還要儲存一下索引檔案

3.where條件裡用不到的字段不建立索引

4.資料重複且分布平均的表字段,因此應該只為最經常查詢和最經常排序的資料列建立索引。

注意,如果某個資料列包含許多重複的內容,為它建立索引就沒有太大的實際效果。

不過,雖然索引可以加快查詢速度,提高 mysql 的處理效能,但是過多地使用索引也會造成以下弊端

注意:索引可以在一些情況下加速查詢,但是在某些情況下,會降低效率。

索引只是提高效率的乙個因素,因此在建立索引的時候應該遵循以下原則:

mysql怎麼建立,刪除,檢視索引?

mysql是乙個開源的應用非常廣泛的資料庫。mysql裡面的索引能利用利用指標,能夠大大提高查詢效率。特別是當資料量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快成千上萬倍。那麼,怎麼建立索引呢?第一步,建立乙個表,結構如下 create table t id int unsigned no...

mysql優化 怎麼建立字首索引

當我們索引的字段是很長的字串時,可以用到字首索引 表結構create table tb goods spu id bigint 20 not null comment 主鍵 goods name varchar 128 not null comment 商品名稱 primary key id 建立字...

mysql怎麼用鎖 MySQL的鎖應該怎麼用 一

先說重點 鎖是為了固化資源狀態的,加鎖之後一定會有狀態判斷 或加鎖語句的條件裡含有這個 只加鎖不判斷狀態,那這個鎖就沒啥用。如果你加了鎖,但是後邊並沒有回滾機制,那你就要考慮下你 的邏輯是不是有問題了。要有自檢的功能,第一不能相信使用者,第二不能相信呼叫你函式的其它程式設計師。盡量保證你的 在被重複...