###### tags: `Index研究` # 索引類型 叢集索引、聚簇索引 Clustered Index --- >叢集索引(Clustered Index)直接修改原本的資料表順序,將資料按照要索引的欄位排,就是一個王牌的意思。如此可以讓資料搜尋非常有效率,尤其是依照順序(accessed sequentially)或是一個範圍連續資料的時候。想當然爾,一張資料表只會有一個叢集索引,通常就是主鍵欄位(primary key column)。 因為叢集索引會調整資料順序,所以它最大的特色就是實體的資料(physical data rows)跟索引表(index block/index table)中的順序會是一樣的。 非叢集索引、非聚簇索引、普通索引、複合索引、聯合索引、輔助索引 non-Clustered Index --- >非叢集索引(Non-Clustered Index)是指不管資料在原本資料表中的排序,而在索引表中自己依照索引值建立排列。與叢集索引的差別是,叢集索引的排列順序就是實際上資料的排列順序,而非叢集索引的排列順序不會/無法影響到實際資料的排列順序。也因此,一個資料表中可以包含很多非叢集索引。 通常會使用非叢集索引的會是在 JOIN, WHERE 或是 ORDER BY 使用的非主鍵欄位(non-primary key columns)。 覆蓋索引 Convering Index --- 覆蓋索引是在索引中的一種特殊情況的InnoDB其中對於一個查詢所需的所有字段被包含在索引; 換句話說,索引本身包含執行查詢所需的數據,而不必執行其他讀取。 從non-Clustered Index中就可以取得想要的資料,不需再*回表查詢,稱覆蓋索引。 簡單說就是:Select的欄位正好是index的欄位 > Tip! > 回表查詢(Lookup): > 意指Query中所需的欄位在使用的non-Clustered Index中未被包含,需在用完non-Clustered之後,再去Table或Clustered Index中查詢,組合出Query需要的結果。 > 此行為消耗的時間相對會比較大 {%hackmd theme-dark %}
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up