Performance

是否存在表中存在一個或多個索引會對其產生偏見的情況?

  • January 26, 2016

標題總結了它。

我了解到並且總是聽說表中的索引可以改進 CRUD 操作。上週末我遇到的一位開發人員告訴我,他不喜歡索引,因為它們很糟糕——是的,“糟糕”沒有澄清任何事情,但我們沒有時間進一步討論(我們參加了一個聚會)。

無論如何,也許是因為我缺乏經驗,我不知道索引會在 CRUD 操作期間引起麻煩的情況,但也許有一些。我問這個問題是想知道有沒有…

好吧,我認為您有一些混合概念:

  1. 索引提高了 READ OPERATIONS(SELECT 的那些)的性能,同時增加了 INSERT/UPDATE OPERATIONS 的處理時間(所以它們並沒有改善所有的 CRUD 操作,正如您所聽說的)。每次插入新行時,都應該更新索引,如果索引過多,則會增加插入時間,有時還會增加更新(如果更新涉及索引的內容。
  2. 索引使用空間,如果您有很多行,則需要大量空間。
  3. 系統知道哪個是最好使用的索引不是問題,我認為這不是真正的性能殺手,但您應該尋找冗餘索引,因為它們正在使用插入/更新的空間和時間。

為此,您應該知道您的數據庫引擎如何使用索引,在 MySQL 中,如果您有一個超過名稱、姓氏欄位和其他名稱的索引,後者是多餘的,因為它包含在第一個中(因為它出現在同一個order, surname only 不包括在內),作為冗餘索引的範例。

此外,您應該測試您的數據庫將如何解釋查詢以及將使用哪些索引(在 MySQL 中,您可以使用 Explain… 以及您正在測試的查詢) 4. 最後,索引是數據庫最重要的特性之一,索引本身不能“壞”,通常當您忘記添加某些特定索引時會出現問題,而不是索引過多,但它可能會發生。

引用自:https://dba.stackexchange.com/questions/127345