mysql辦公 辦公 mysql索引

2021-10-17 21:41:55 字數 1359 閱讀 4828

舉個例子:20多w的資料,查詢語句,什麼都沒有查到,既沒有走到主鍵索引,普通索引,什麼都沒走,走的就非常慢.

下面要加索引,並了解mysql索引的作用,以及如何使用他們索引.

介紹mysqlmysql索引都以b-樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄 開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無 需掃瞄任何記錄即可迅速得到目標記錄所在的位置。如果表有1000個記錄,通過索引查詢記錄至少要比順序掃瞄記錄快100倍。

優勢:可以快速檢索。

劣勢:索引本身也是表,因此會占用儲存空間.

primary, index, unique 這3種是一類

primary 主鍵。 就是 唯一 且 不能為空。

index 索引,普通的

unique 唯一索引。 不允許有重複。

fulltext 是全文索引,用於在一篇文章中,檢索文字資訊的。

唯一不重複作為主鍵,使用 primary.

短文本,有重複資料,但是少量重複的,普通的 index

舉個栗子身份證號:unique 唯一不重複的索引

長文字,全文索引,fulltext.

1.mysql explain用法寫出效能更好一點的sql,避免客戶總是投訴這個系統為什麼這麼慢。

explain列的解釋

table:顯示這一行的資料是關於哪張表的

type:重要的列,顯示連線用了何種型別,結果值從好到壞依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all

一般來說,得保證查詢至少達到range級別,最好能達到ref。

囉裡囉嗦:最好到最差的連線型別為const、eq_reg、ref、range、index和all

possible_keys:顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。可以為相關的域從where語句中選擇乙個合適的語句

key: 實際使用的索引。如果為null,則沒有使用索引。很少的情況下,mysql會選擇優化不足的索引。這種情況下,可以在select語句中使用use index(indexname)來強制使用乙個索引或者用ignore index(indexname)來強制mysql忽略索引

key_len: 使用的索引的長度。在不損失精確性的情況下,長度越短越好

ref: 顯示索引的哪一列被使用了,如果可能的話,是乙個常數

rows: mysql認為必須檢查的用來返回請求資料的行數

extra: 關於mysql如何解析查詢的額外資訊。

mysql怎麼實現行級索 Mysql

mysql innodb的特點 innodb如何實現事務 redo和undo,兩次提交 mysql預設的事務隔離級別 innodb如何儲存檔案 如何最高效的遍歷乙個上億的表 朋友關係如何分表 使用者數上千萬 冗餘 支援事務 原子性 atomicity 一致性 consistency 隔離性 isol...

mysql的表索和行索 mysql行鎖和表鎖

在呼叫儲存過程中,就會涉及到表鎖,行鎖這一概念 所謂區別 有索引的時候就是行鎖,沒有索引的時候就是表索。innodb 的行鎖是在有索引的情況下,沒有索引的表是鎖定全表的.表鎖演示 無索引 session1 mysql set autocommit 0 mysql select from innodb...

mysql筆記系列 九 mysql如何選擇索引的

12.mysql如何選擇索引的 12.1 補充索引的知識 1.建立索引慢,刪除索引快,是因為建立索引的時候生成索引檔案,而且刪除的時候是標記刪除,相當於打了乙個失效標記,所以快。2.執行器呼叫儲存引擎的介面只能獲取到原始的資料,後續的order join group 等都在server層進行,資料過...