Mysql建立高效能索引

2021-09-06 02:25:02 字數 1678 閱讀 9862

mysql索引的基礎和型別

索引的基礎:   1.索引類似於書籍的目錄,要想找到一本書的某個特定主題,需要先查詢書的目錄,定位對應的頁碼

儲存引擎使用類似的方式進行資料查詢,先去索引當中找到對應的值,然後根據匹配的索引找到對應的資料行

索引對效能的影響

大大減少伺服器需要掃瞄的資料量,比如我們資料表中有一千條資料,我們只要根據條件查詢其中的一條,我們只需要根據這一列建立乙個對應的索引就可以。

幫助伺服器避免排序和臨時表

將隨機i/o變順序i/o

大大提高查詢速度,降低寫的速度,占用磁碟

索引的使用場景

對於非常小的表,大部分情況下全表掃瞄效率會更高。不用去刻意的建立索引

中到大型表,索引非常有效

特大型的表,建立和使用索引的代價將隨之增長,刻意使用分割槽技術來解決,

索引的型別

索引有很多種型別,都是事先在儲存引擎層的

普通索引:最基本的索引,沒有任何約束限制

唯一索引:與普通索引類似,但是具有唯一性,比如現在我們有了乙個a 你在建立乙個a 就會報錯了

主鍵索引:特殊的唯一索引,不允許有控制

乙個表只能有乙個主鍵索引,可以有多個唯一索引

主鍵索引一定是唯一索引,唯一索引不是主鍵索引

主鍵可以與外來鍵構成參照完整性約束,防止資料不一致

組合索引:將多個列組合在一起建立索引,可以覆蓋多個列

外來鍵索引:只有innodb型別的表才可以使用外來鍵索引,保證資料的一致性,完整性和實現級聯操作

全文索引:mysql自帶的全文索引只能用於myisam,並且只能對英文進行全文索引

mysql索引的建立原則

原則:最適合索引的列是出現在where子句中的列,或連線子句中的列而不是出現在select關鍵字後的列

索引列的基數越大,索引的效果越好

對字串進行索引,應該制定乙個字首長度,可以節省大量的索引空間

根據情況建立復合索引,復合索引可以提高查詢效率

避免建立過多的索引,索引會額外占用磁碟空間,降低寫操作的效率

主鍵盡可能選擇較短的資料型別,可以有效減少索引的自盤占用,提高查詢效率

mysql索引的注意事項

注意復合索引遵守字首原則

可以生效的

不可生效的是

因為這種屬於是最左字首型別的  所以 必須有前面的在前才能使用,否則會不可使用,使用b不能忽略a 使用c不能忽略b

like查詢,%不能在前,可以使用全文索引

百分號不能在前,要不然就算給name設定了索引,所以也無法生效。可以使用全文索引

column is null可以使用索引

如果mysql估計使用索引比全盤掃瞄更慢,會放棄使用索引

如果or前的條件中的列有索引,後面的沒有,索引都不會被用到

列型別是字串型別,查詢時一定要給值加引號,否則索引失效

比如varchar(16)  

「100」

假如我在搜尋的時候 where name=100; 沒有去加引號的話 可以搜到 但是索引失效。

在一些mysql索引基礎考題中,我們可以輕鬆的通過索引基礎和型別來解決此類問題,對於一些索引建立注意事項方面的考點,我們可以通過索引建立的原則和注意事項來解決。

真題: 建立mysql復合索引應該注意哪些事項?

高效能mysql(一) 建立高效能索引

單列索引和多列索引 單列索引 多個單列索引的選擇問題 多個or條件 多個單列的效能往往效能很低,盡量建立高效的多列索引。多列索引 選擇合適的索引順序 避免範圍條件 在where子句中,in是有效的,範圍條件會導致後面的索引無效!在order by中,範圍條件和in都會導致無法按照索引排序!按照索引順...

mysql高效能索引 mysql高效能索引( )

在開發中,我們知道大多數應用的瓶頸在於sql語句的執行時耗,在這裡並不討論sql語句的安全,僅僅討論高效能sql語句,而與高效能sql語句緊密相連的就是傳說中的 索引。索引 一種工作在儲存引擎端的用於快速找到記錄的一種資料結構。mysql使用索引的方式是 先找到索引的值,再根據索引的值找到資料行。索...

建立高效能索引 《高效能Mysql》筆記2

crate table people last name varchar 50 not null,first name varchar 50 not null,dob date not null,gender enum m f not null,key last name,first name,do...