SQL Server索引建立原則

2021-09-30 20:39:28 字數 1588 閱讀 7054

什麼樣的表需要建立索引

錶小的沒必要建立索引,可能查詢索引的時間都比掃瞄表還長。

操作對索引的影響

索引會影響 insert、update、delete 和 merge 語句的效能,因為進行修改時索引會發生變化,建立索引時應該避免大量更新列的的操作,而選擇時將查詢列作為索引列,或者是兩個表的關聯欄位和查詢條件字段作為索引列。

字段長度的選擇

. 索引列要選擇較短的列,不能將 ntext、text、image、varchar(max)、nvarchar(max) 和 varbinary(max) 資料型別的列指定為索引鍵列。

何為聚集索引

儲存記錄是物理上連續的,例如查詢自然數大於1的;

在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。乙個表只能包含乙個聚集索引。 如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的資料訪問速度。

由於聚集索引是給資料排序,不可能有多種排法,所以乙個表只能建立乙個聚集索引。科學統計建立這樣的索引需要至少相當與該錶120%的附加空間,用來存放該錶的副本和索引中間頁,但是他的效能幾乎總是比其它索引要快。

由於在聚集索引下,資料在物理上是按序排列在資料頁上的,重複值也排在一起,因而包含範圍檢查(bentween,<,><=,>=)或使用group by 或order by的查詢時,一旦找到第乙個鍵值的行,後面都將是連在一起,不必在進一步的搜尋,避免啦大範圍的掃瞄,可以大大提高查詢速度。

何為非聚集索引

邏輯上連續,物理儲存並不連續的,字典的部首查詢就是乙個非聚集索引.;

sqlserver預設情況下建立的索引是非聚集索引,他不重新組織表中的資料,而是對每一行儲存索引列值並用乙個指標指向資料所在的頁面。他像漢語字典中的根據『偏旁部首』查詢要找的字,即便對資料不排序,然而他擁有的目錄更像是目錄,對查取資料的效率也是具有的提公升空間,而不需要全表掃瞄。

乙個表可以擁有多個非聚集索引,每個非聚集索引根據索引列的不同提供不同的排序順序。

.索引型別的選擇及應用場景

列經常被分組排序:聚集索引和非聚集索引都可以使用;

返回某個範圍內的資料(類似where 區間查詢):使用聚集索引;

查詢極少或者極少不同值的(類似where id=1):不適合加索引;

小數目的不同值(類似 where id=1 or id=2.。。。):使用聚合索引;

大數目的不同值:使用非聚合索引;

頻繁更新的列:使用非聚集索引;

外來鍵列:聚集索引和非聚集索引均可以;

主鍵列:聚集索引和非聚集索引均可以;

頻繁修改索引的列:使用非聚集索引;

10.聚集索引乙個表只能有乙個,而非聚集索引乙個表可以存在多個。

狂建索引也會帶來很多影響

1、提高了查詢速率,降低了更新表效率,資料庫表不但要儲存資料,還要儲存索引檔案;

2、索引會占用磁碟空間的索引檔案,多個索引影響很明顯;

3、索引只是乙個優化因素,還應該考慮其他例如sql語句的優化。

SQL Server 索引的建立原則

o 1 索引並非越多越好,乙個表中如果有大量的索引,不僅占用大量的磁碟空間,而且會影響 insert delete update 等語句的效能。因為當表中資料更改的同時,索引也會進行調整和更新。o 2 避免對經常更新的表進行過多的索引,並且索引中的列盡可能少。而對經常用於查詢的字段應該建立索引,但要...

SQL Server 索引的建立原則

避免對經常更新的表進行過多的索引,並且索引中的列盡可能少。而對經常用於查詢的字段 外來鍵 應該建立索引,但要避免新增不必要的字段。資料量小的表最好不要使用索引,由於資料較少,查詢花費的時間可能比遍歷索引的時間還要短,索引可能不會產生優化效果。在條件表示式中經常用到的 不同值較多 主鍵的列 的列上建立...

sqlserver 資料庫索引建立原則

1 始終包含聚集索引 當表中不包含聚集索引時,表中的資料是無序的,這會降低資料檢索效率。即使通過索引縮小了資料檢索的範圍,但由於資料本身是無序的,當從表中提取實際資料時,會產生頻繁的定位問題,這也使得sql server基本上不會使用無聚集索引表中的索引來檢索資料。2 保證聚集索引唯一 由於聚集索引...