MySQL查詢優化之索引

2021-09-19 20:32:13 字數 813 閱讀 5701

mysql查詢優化之索引

什麼是索引

索引簡單來說就類似字典,想想我們小時候在中華字典怎麼查某個字。索引的作用就是快速找出在某個列中有一特定值的行。

例如:有一張user表,其中有200萬條記錄,記錄著200萬個人的資訊。有乙個phone的字段記錄每個人的**號碼,現在想要查詢出**號碼為***x的人的資訊。

如果沒有索引,那麼將從表中第一條記錄一條條往下遍歷,直到找到該條資訊為止。

假如有了索引,那麼會將該phone欄位,通過一定的方法進行儲存,好讓查詢該字段上的資訊時,能夠快速找到對應的資料,而不必在遍歷200萬條資料。

索引的儲存型別

mysql索引的儲存型別有:btree、hash。

b-tree

b-tree索引是目前關係型資料庫中查詢資料最為常用和有效的索引,大多數儲存引擎都支援這種索引。

innodb聚簇索引

聚簇索引保證關鍵字的值相近的元組儲存的物理位置也相同(所以字串型別不宜建立聚簇索引,特別是隨機字串,會使得系統進行大量的移動操作),且乙個表只能有乙個聚簇索引。

因為由儲存引擎實現索引,所以,並不是所有的引擎都支援聚簇索引。

優點:1、所有的mysql列型別(字段型別)都可以被索引,也就是可以給任意字段設定索引

2、大大加快資料的查詢速度

缺點1、建立索引和維護索引要耗費時間,並且隨著資料量的增加所耗費的時間也會增加

2、索引也需要佔空間,我們知道資料表中的資料也會有最大上線設定的,如果我們有大量的索引,索引檔案可能會比資料檔案更快達到上線值

3、當對表中的資料進行增加、刪除、修改時,索引也需要動態的維護,降低了資料的維護速度。

mysql 索引優化器 Mysql之查詢優化器

對於乙個sql語句,查詢優化器先看是不是能轉換成join,再將join進行優化 優化分為 1.條件優化 2.計算全表掃瞄成本 3.找出所有能用到的索引 4.針對每個索引計算不同的訪問方式的成本 5.選出成本最小的索引以及訪問方式 開啟查詢優化器日誌 開啟 set optimizer trace en...

Mysql查詢語句優化之索引優化案例

sql優化說到底還是索引的優化,建立索引並使之生效.單錶優化 create table student id int 11 not null auto increment,stuname varchar 60 default null,age int 11 default null,varchar ...

MySQL查詢優化技術之使用索引

索引是提高查詢速度的最重要的工具。當然還有其它的一些技術可供使用,但是一般來說引起最大效能差異的都是索引的正確使用。在mysql郵件列表中,人們經常詢問那些讓查詢執行得更快的方法 索引是提高查詢速度的最重要的工具。當然還有其它的一些技術可供使用,但是一般來說引起最大效能差異的都是索引的正確使用。在m...