精 MySQL 索引複習篇

2021-10-04 17:14:50 字數 672 閱讀 3115

mysql索引實現

假設我們有一張資料表 employee(員工表),該錶有三個字段(列),分別是name、age 和address。假設表employee有上萬行資料(這公司還真大),現在需要從這個表中查詢出所有名字是『zhangsan』的雇員資訊,你會快速的寫出sql語句:

select name,age,address from employee where name=『zhangsan』

如果資料庫還沒有索引這個東西,一旦我們執行這個sql查詢,查詢名字為zhangsan的雇員的過程中,究竟會發生什麼?資料庫不得不在employee表中的每一行查詢並確定雇員的名字(name)是否為『zhangsan』。

由於我們想要得到每乙個名字為zhangsan的雇員資訊,在查詢到第乙個符合條件的行後,不能停止查詢,因為可能還有其他符合條件的行,所以必須一行一行的查詢直到最後一行——這就意味資料庫不得不檢查上萬行資料才能找到所有名字為zhangsan的雇員。這就是所謂的全表掃瞄(參見前文「執行計畫」中type=all),顯然這種模式效率太慢,技術可能覺得無所謂,業務會拿刀砍你。

你會想為如此簡單的事情做全表掃瞄效率欠佳——資料庫是不是應該更聰明一點呢?這就像用人眼從頭到尾瀏覽整張表,很慢也不優雅,「索引」派上用場的時候到了,使用索引的全部意義就是࿱

MYSQL 索引複習

索引 索引是在儲存引擎層實現的,而不是在伺服器上實現的,所以不同的儲存引擎具有不用的索引型別和實現。索引的作用 建表後新增索引 alter table table name add index index name column list 普通索引 alter table table name ad...

MySQL複習 索引

今天覆習了mysql的索引,知道了怎麼新增 刪除索引,但是突然有個疑惑,我知道新增索引可以提高資料查詢的速率,但是不知道為什麼可以提高效率,現在就來聊聊索引的手段。我知道,如果乙個字段沒有新增索引,查詢一般是按照順序進行全盤搜尋,這樣子做很耗費時間,特別是資料庫裡面的資料達到百萬級別時,這時候索引的...

mysql筆記 索引篇

紅黑樹是二叉樹平衡之後的結果 b 樹,是紅黑樹本來乙個節點存乙個資料,改為乙個節點存多條資料,有幾條資料,度的值就是多少,度的大小和cpu一次讀取磁碟大小相匹配最好,度和實際儲存的資料個數為 15 16最好 b 樹,節點不儲存資料,葉子節點儲存資料,對比b 樹,節點儲存資料,這樣可以使度的值變的更大...