2015-09-17 74 views
0

我使用SQL Server 2008 R2。我是否需要爲已有主鍵的表編制索引?我需要索引表

主鍵,表格被自動索引。

+0

您可能需要爲其他列編制索引。 – jarlh

+0

謝謝...順便說一句,我需要索引列,我在哪裏使用的條款權利? –

+0

並非總是如此。這取決於... – jarlh

回答

1

想象一下,該國所有公民的電話指南。假設主鍵是國家身份證號碼(美國和英國可能更願意在社會安全號碼中考慮)。

這種表會快速檢查一個知名公民的電話。該表按ID號排序,因此我將指南打開了一半。我知道這個數字是在上半場還是在其他時間。我一直這樣做直到找到手機。所以搜索運營成本是對數的。

現在想象一下,警方想調查一個未知的電話號碼。該表根據人員ID排序,而不是通過電話號碼排序。他們需要看看整個指南!即使在今天,從硬盤讀取數據的速度也很慢。一張大桌子可以有MBytes甚至GBytes。如果警方非常謹慎地做這件事,聰明的做法是讓另一個名單中的所有打票人號碼按數字排序。當然,這需要用每個新記錄更新索引表,並且需要一些硬盤。

表越大表示對數和線性之差越大。所以,如果你有一個1000記錄表,它是很好的索引它。但是索引很糟的1,000,000條記錄表可能會破壞你的性能。你讀得越多,你想索引越多。您插入,刪除或更新索引字段的次數越多,您希望索引它的次數越少。

更新:

  1. WHERE
  2. JOIN的
  3. GROUP BY

它可能會變得複雜,以決定哪些列:這可能需要建立索引的列是那些在使用指數。順序可能很重要。空和功能可以讓你的生活更加艱難。數據庫有時會嘗試黑客使用和索引與兩列wven當你只從一個搜索。一些領域可能只有很少的信息(他們很少有selective)。這可能包括性別專欄(男性/女性),只會將信息減少到一半。