Sql-Server

表中的行數是否有最佳數字以開始使用索引?

  • September 20, 2020

我是DBA的新手。我想知道表的行數中是否有任何指定點,當我們到達該點時,我們可以使用索引。我知道表的行數和使用索引之間應該有一些依賴關係,但我不知道是否有標準表的行數。

我不知道最好的,但在少數情況下沒有真正的價值。

使用索引有一些成本。是的,索引查找比表掃描快,但使用索引有一些成本。索引維護顯然有成本。

如果一個表有一個 PK,那麼您應該將它用作一個 PK,並且通常是集群的。

考慮一張 USstates 表(50 行)

ID PK 身份 tinyint

名稱 varchar(20)

區域 tinyint

Region 將用於對 NE、SE、…等狀態進行分組

我個人永遠不會在 Name 或 Region 上使用索引 - 表掃描仍然非常快。Region 將是一個 FK,但它不會自動創建索引(據我所知)。整個表正好在 2K 頁大小。如果經常使用 State.Name 上的排序,那麼可以使用該索引,但我認為您甚至無法衡量性能提升。

超過一百萬行然後是開始建構索引。

然後在一千到一百萬之間考慮根據具體情況建構索引。

即使在 10,000 行中,也會有很多明顯索引的情況。AddDate 之類的列不太可能更改,並且會大量用於搜尋和排序,我將對其進行索引和維護(碎片整理)。一個包含超過 10,000 行的表,將 State 引用為 FK,我將在前面對該列進行索引。但是,由於您要問這個問題,所以可能會等待並針對現實生活中的查詢進行優化。

我不希望您採取另一個極端,並在可能使用的每一列上放置一個索引。索引有成本。索引會減慢插入和更新速度。高度碎片索引可能比表掃描慢。

我得到這個網站上的很多使用者想要預先優化並進行理論討論。這是給 DBA 新手的現實生活建議。

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