iT邦幫忙

DAY 9
3

只談MySQL系列 第 9

只談MySQL (第九天) Index...

Index和SQL指令的執行效能有很大的關係, 很多討論資料庫系統Performance Tuning的書中, 都會把Index的建立原則加以詳細說明...
昨天我們談到兩種Index: Primary Key和Unique Index, 這是最常見的兩種Index, Primary Key有Unique和Sort的機制, 通常也不允許NULL值的存在, 所以一個位被設置為Primary Key時, 通常就有三個限制條件在內: 惟一值、不為NULL、由小到大排序, 所以Primary Key也可視為限制條件(Constraint).
我們也可以這樣建立Index:
mysql> CREATE INDEX RN ON account(RealName);
這樣會以RealName欄位建立一個Index, 沒有惟一性質, 可重覆值.
mysql> CREATE INDEX RN24 ON account(RealName(16));
以RealName的前16個字元建立Index.
一般來說, MySQL是以BTREE演算法則來建立Index, BTREE的好處是便宜..就是說不須要耗費大量的計算程序..只要簡單的比較程序就可以找到資料, 由統計瞭解, 一個好的Index設計, 應該要能在三個BTREE Page中找到資料, 這樣的Index設計才算是效率好的Index.
另外一個設計Index的原則是要能夠把WHERE條件中有納入比較條件的欄位都放在Index中, 這樣的Index比較能夠提升SQL指令的運作效率.
第三個原則是, Index要小, 小到能提供足夠的索引需要鍵值以提升WHERE條件的過濾速度, 又要能減少磁碟IO的次數...
所以, 一個好的DBA會經常檢查各個Index的使用情況, 怎麼檢查呢? 就是去看一個參數值Hit Rate, 這個參數值高, 代表Index的效率很好, 這個參數值低, 代表Index能用來找到資料的效率低.
關於Index, 我們就先談到這裏, 之後會在必要時再回來討論Index..明天我們討論View...


上一篇
只談MySQL (第八天) Index
下一篇
只談MySQL (第十天) View...
系列文
只談MySQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言