<code>索引:是一種按照特定存儲格式存儲的特殊資料,用于SQL查詢</code>
<code>索引的類型:</code>
<code> </code><code>聚集索引和非聚集索引:資料是否和索引存儲在一起</code>
<code> </code><code>主鍵索引和輔助索引:索引是否在主鍵之上</code>
<code> </code><code>左字首索引和覆寫索引:是否隻截取左邊的前幾個位元組最為索引,mysql預設使用左字首索引</code>
<code> </code>
<code>左字首索引的存儲: </code>
<code> </code><code>在指定索引的字段中截取左邊的前幾個位元組生成索引,并對索引進行排序處理,将排完序的索引進行分組管理</code>
<code> </code><code>并生成源資料,當使用者以索引字段作為查詢條件時,mysql去掃描中繼資料,并定位到中繼資料對應資料的上</code>
<code>索引管理:</code>
<code> </code><code>CREATE INDEX 索引名 ON 表名 (字段名); </code><code>#建立索引</code>
<code> </code><code>SHOW INDEX FROM 表名; </code><code>#檢視指定表的索引</code>
<code> </code><code>DROP INDEX 索引名 ON 表名; </code><code>#删除索引</code>
<code> </code><code>注意:索引沒必要修改,因為沒有意義</code>
<code>示例:</code>
<code> </code><code>USE mysql; </code><code>#使用mysql庫</code>
<code> </code><code>CREATE INDEX test_index ON user (User); </code><code>#在user表的User字段索引</code>
<code> </code><code>SHOW INDEX FROM user; </code><code>#檢視索引是否建立成功</code>
<code> </code><code>EXPLAIN SELECT </code><code>*</code> <code>FROM user WHERE User</code><code>=</code><code>'root'</code><code>\G;</code>
<code> </code><code>#使用EXPLAIN檢視指令的執行過程(不會真正的去執行)</code>
<code> </code><code>#使用索引的查詢過程</code>
<code> </code><code>id</code><code>: </code><code>1</code> <code>#編号</code>
<code> </code><code>select_type: SIMPLE </code><code>#查詢類型 SIMPLE:表示簡單查詢 </code>
<code> </code><code>table: user </code><code>#查詢關聯到的表</code>
<code> </code><code>type</code><code>: ref </code><code>#通路類型</code>
<code> </code><code>possible_keys: test_index </code><code>#可能會用到的索引</code>
<code> </code><code>key: test_index </code><code>#最終用到的索引</code>
<code> </code><code>key_len: </code><code>48</code> <code>#在索引中使用的位元組數 </code>
<code> </code><code>ref: const </code><code>#一對一查詢</code>
<code> </code><code>rows: </code><code>3</code> <code>#為找到目标行而讀取的行</code>
<code> </code><code>Extra: Using where </code><code>#額外資訊</code>
<code> </code>
<code> </code><code>常見通路類型:</code><code>ALL</code><code>:全表掃描 index:根據索引進行全表掃描 </code><code>range</code><code>:範圍掃描 </code>
<code> </code><code>ref:更具索引傳回表中比對的值所在的行 const</code><code>/</code><code>system:直接傳回單行(一般基于主鍵查詢)</code>
<code> </code><code>#沒有使用索引的查詢過程</code>
<code> </code><code>id</code><code>: </code><code>1</code>
<code> </code><code>select_type: SIMPLE</code>
<code> </code><code>table: user</code>
<code> </code><code>type</code><code>: </code><code>ALL</code> <code>#全表掃描查詢</code>
<code> </code><code>possible_keys: NULL</code>
<code> </code><code>key: NULL</code>
<code> </code><code>key_len: NULL</code>
<code> </code><code>ref: NULL</code>
<code> </code><code>rows: </code><code>6</code>
<code> </code><code>Extra: Using where</code>
<code>視圖管理:</code>
<code> </code><code>視圖也叫虛表,是由select語句生成,mysql的視圖較為不穩定,不建議使用</code>
<code> </code><code>CREATE VIEW 視圖名 AS select語句 </code><code>#建立視圖</code>
<code> </code><code>DROP VIEW 視圖名 </code><code>#删除視圖</code>
<code> </code><code>CREATE DATABASE mydb; </code><code>#建立測試資料庫</code>
<code> </code><code>USE mydb; </code><code>#使用測試資料庫</code>
<code> </code><code>CREATE VIEW test_view AS SELECT User,Host,Password FROM mysql.user; </code><code>#建立視圖</code>
<code> </code><code>SELECT </code><code>*</code> <code>FROM test_view; </code><code>#檢視視圖内容</code>
<code> </code><code>SHOW TABLE STATUS LIKE </code><code>'test_view'</code><code>\G; </code><code>#檢視視圖狀态</code>
<code> </code><code>Name: test_view</code>
<code> </code><code>Engine: NULL</code>
<code> </code><code>Version: NULL</code>
<code> </code><code>Row_format: NULL</code>
<code> </code><code>Rows: NULL</code>
<code> </code><code>Avg_row_length: NULL</code>
<code> </code><code>Data_length: NULL</code>
<code> </code><code>Max_data_length: NULL</code>
<code> </code><code>Index_length: NULL</code>
<code> </code><code>Data_free: NULL</code>
<code> </code><code>Auto_increment: NULL</code>
<code> </code><code>Create_time: NULL</code>
<code> </code><code>Update_time: NULL</code>
<code> </code><code>Check_time: NULL</code>
<code> </code><code>Collation: NULL</code>
<code> </code><code>Checksum: NULL</code>
<code> </code><code>Create_options: NULL</code>
<code> </code><code>Comment: VIEW</code>
<code> </code><code>注意:視圖的修改其實是修改基表的資料(慎用) </code>
<code> </code>
本文轉自 紅塵世間 51CTO部落格,原文連結:http://blog.51cto.com/hongchen99/1934020