簡體   English   中英

Mysql索引鍵有什么用?

[英]What is the use of Mysql Index key?

嗨,我是mysql的新手

這是我的問題:

  1. Mysql索引鍵有什么用?

  2. 在沒有定義索引鍵的情況下,它在mysql查詢中是否有所不同?

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

太感謝了

1-在一個列(或一組列)上定義索引可以使在該列(或一組集)上的搜索變得更快,但會增加磁盤空間。

2-是的,不同之處在於使用該列的查詢會快得多。

3-是的,因為通常使用主鍵進行搜索,所以始終對該列進行索引是有意義的。

此處閱讀有關MySQL索引的更多信息

索引確實是另一組記錄。 而已。

使索引訪問更快的是:

  • 在內部,引擎比整個表行更有可能緩沖索引
  • 索引較小,因此要進行解析意味着要讀取更少的硬盤塊
  • 該索引已經排序,因此查找給定值很容易
  • 在不為null的情況下,它甚至會更快(出於各種原因,但是最重要的要知道的是,引擎不會在索引中存儲null值

要知道索引是否有用並不是一件容易的事(顯然我不是在談論主鍵),應該進行調查。 以下是一些可能會減慢您的操作速度的方法:

  • 它將減慢索引字段的插入和更新
  • 它需要更多維護:必須為每個索引建立統計信息,因此如果您添加許多索引,則計算可能會花費更長的時間
  • 當統計信息不是最新時,它可能會使查詢變慢。 這種影響可能是災難性的,因為引擎實際上會“走錯路”
  • 當查詢不足時,它可能會變慢(無論如何索引都不是一個規則,而是一個例外:沒有索引,除非有某些查詢的沖動。我知道通常每個表至少有一個索引,但是它是在調查之后得出的)我們可以對最后一點進行很多評論,但是我認為每種情況都是特殊的,並且互聯網上已經存在許多這樣的例子。

現在關於您的問題“所有主鍵都是默認的索引鍵嗎?”,我必須說優化器不是這樣工作的。 當表中定義了各種索引時,將使用動態數據和一些其他靜態數據(索引統計信息)來編譯更有效的索引組合,以達到最佳性能。 本身沒有默認索引,每種情況都會導致不同的結果。

問候。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM