2010-05-17 26 views
3

MySQL中的一個表最好有多少個索引?每個數據庫表有多少索引?

我有一個company表,其中我主要搜索ID,statecategory

+1

你會在這個表上運行什麼類型的查詢?插入,上移,選擇,刪除? – 2010-05-17 00:27:23

+0

更多細節將有所幫助。我們必須猜測,ID可能是您的主鍵,而不是ID和類別的組合(這是完全可能的)。如果您發佈架構,我們會有更好的主意。 – wlangstroth 2010-05-18 14:37:15

+0

您搜索「FOR」ID,州,貓或您搜索「BY」他們。對我而言,「FOR」表示它們在選擇列表中。例如我搜索歌曲的藝術家。 BY在where子句中。 – 2013-05-31 19:54:11

回答

5

對於這個問題沒有一個單一的答案:創建儘可能多的索引,以使您的查詢速度夠快,不再需要。

你必須決定何時權衡各種事情什麼指標:

  • 你擁有的索引越多,速度較慢的插入和更新將是(因爲他們需要更新所有索引)
  • 對沒有適當索引的表進行查詢可能速度很慢,如果數據庫必須執行表掃描
  • 某些列不需要索引(例如,「性別」列,其中唯一可能的值爲「M」或「F」)

對於您的特定場景,似乎有三個索引,一個是關於ID(如果這是主鍵,那麼它已經有一個隱式索引),一個關於狀態,一個關於類別就足夠了。

+0

我懷疑狀態或類別是否會對自己有用。但沒有基數就沒有辦法知道。如果他們在所有50(53)個州開展業務,那麼通過這些指數可能達到1-5%,但如果它是一個主要在10個州開展業務的區域業務,那麼它可能不會足夠低聚類因子是有用的。 – 2013-05-31 19:58:06

0

沒有「首選」數量的索引,這一切都取決於您的查詢。在你的例子中,你需要不超過3個索引,一個用於ID,一個用於狀態,另一個用於類別。

相關問題