2014-02-27 27 views
1

嗨,我知道MySQL索引在某種程度上。mysql索引如何使SELECT查詢更快

通過

CREATE TABLE Product (
    -> ID SMALLINT UNSIGNED NOT NULL, 
    -> ModelID SMALLINT UNSIGNED NOT NULL, 
    -> PRIMARY KEY (ID), 
    -> INDEX (ModelID) 

創建表時,我可以創造一個指數

CREATE INDEX index_name 
ON table_name (column_name) 

還添加索引創建表後改變由

ALTER TABLE TABLE_NAME ADD INDEX (COLUMN_NAME); 

指數* *我想知道的是如何索引使選擇查詢快速

索引如何影響選擇算法MySQL,索引列如何影響算法?請解釋,提前致謝

+1

[數據庫索引如何工作?](http://stackoverflow.com/questions/1108/how-does-database-indexing-work) – Barranka

+1

http:// use-the-index-luke可能有重複。 com是一個關於索引的優秀教程。 –

回答

3

索引創建一個單獨的文件,其中記錄在二叉樹中排序。查詢記錄然後變成二進制搜索操作,而不是全表掃描,使得通過索引字段查找記錄的速度更快。

主鍵查找速度更快,因爲與索引不同,記錄與鍵一起存儲。也就是說,記錄存儲在二叉樹的葉中。使用索引時,只有索引字段存儲在葉中,並且查找需要額外的I/O操作來查找記錄。

當你爲一個字段建立索引時,你最終會創建一個相當大的索引文件,這就是爲什麼你不應該索引任何不需要索引的字段的原因。

0

簡單英語中,索引表可以使SELECT更快,因爲它在表格的書中保留了類似索引的內容。想象一下,你必須在書中找到一個特定的句子;如果你知道它在哪一章是不是更容易?或者更好的是,你可以在索引中搜索關鍵字?

所以說你有一堆名稱的表。如果您在名稱上創建索引,則會按名稱的字母順序對錶格進行排序。類似於「SELECT id FROM users WHERE name ='Zach'」的查詢將大致瞭解該記錄所在的位置,而不必逐個查看每條記錄,直到找到正確的行。

雖然索引可能有缺點。當插入和刪除行時,索引必須更新以保持準確,並且這需要計算能力。這就是爲什麼你不能只索引你添加的每一列,並假設你正在做一件好事。

另一個重要的注意事項是,列中數據越獨特,索引的效果就越好。在填滿國會議員的表格中,一列社會保險號碼的索引將比「政黨」欄目更有效。