2010-05-27 91 views
1

您好我是新手到mysqlMysql索引鍵的用途是什麼?

這裏是我的問題:

  1. 什麼是使用MySQL索引鍵的?

  2. 它是否會在定義一個索引鍵並且沒有它的情況下在mysql查詢中起作用?

  3. 所有主鍵都是默認的索引鍵嗎?

萬分感謝

回答

3

1列上定義的索引(或一組列),使搜索該列(或一組)快得多,在額外的磁盤空間爲代價的。

2-是的,區別在於使用該列的查詢會快得多。

3-是的,因爲通常通過主鍵進行搜索,所以對於該列總是進行索引是有意義的。

閱讀更多關於MySQL索引here

+0

謝謝!!!!!!!!!!!!!!!!〜 – leon 2010-05-27 22:54:34

0

索引確實是一組額外的記錄。而已。

東西,讓索引訪問速度是:

  • 內部有更多的機會,發動機放在緩衝指數超過了整個表中的行
  • 該指數小,因此分析它意味着讀書少塊硬盤
  • 的索引已經排序,所以尋找一個給定的值很容易
  • 在暫時不空的情況下,它甚至更快(因各種原因,但要知道,最重要的是發動機d oesn't店指數空值)

要知道一個索引是否是有用的也不是那麼容易猜(很明顯,我不是在談論主鍵),並應進行調查。這裏有一些同行時,可能您的操作減慢:

  • 它會減慢插入和更新的索引字段
  • 它需要更多的維護:統計數據,必須建立對每一個指標,因此計算可能需要如果添加多個索引,則會顯着延長時間
  • 當統計信息不是最新時,它可能會減慢查詢速度。這種影響可能是災難性的,因爲引擎實際上會走「錯誤的路」
  • 當查詢不充分時,它可能會放慢速度(反正索引不應該是一個規則,但是一個例外:沒有索引,除非有確切的衝動我知道通常每個表至少有一個索引,但是在調查之後) 我們可以評論這最後一點,但我認爲每個案例都是特殊的,並且在互聯網中已經存在很多這樣的例子。

現在關於您的問題'是否所有主鍵都是默認的索引鍵?',我必須說優化器不是這樣工作的。當在表格中定義了各種索引時,爲了達到最佳性能,將在飛行數據和其他一些靜態數據(索引統計數據)上編譯效率更高的索引組合。沒有默認索引本身,每種情況都有不同的結果。

問候。