為表建立索引

2022-09-12 16:27:16 字數 1552 閱讀 4882

聚合索引:有多個字段組成,乙個表中只能有乙個;

非聚合索引:有單個字段組成,乙個表中可以有多個;

如tbstudent建立乙個聚合索引:學號,班級 (1)

2個非聚合索引:學號 (2)

班級 (3)

對於查詢:

select * from tbstudent where 學號=『張三』 (1)不起作用,(2)作用;

select * from tbstudent where 學號=『張三』 and 班級=『4班』 (1)起作用;

對於聚合索引必須同時滿足才起左右;滿足單個不作用;

sql語句:

--索引存在時先刪除;with drop時是 相同的索引名

create nonclustered index [idx_xlid] on [dbo].[xs_xl400_zj_yh] ([xlid]) with drop_existing on [primary];

--首次建立

create nonclustered index [idx_xlid] on [dbo].[xs_xl400_zj_yh] ([xlid]) on [primary];

---刪除聚合索引,因為必須只有乙個

alter table xs_xl400_zj_yh drop constraint pk_xs_xl400_zj_yh;

--普通索引 drop index xs_xl400_yh.pk_xs_xl400_yh;

--唯一索引 alter table xs_xl400_yh drop constraint pk_xs_xl400_yh

---建立新的聚合索引

create clustered index [idx_xliddate] on [dbo].[xs_xl400_zj_yh] ([xlid],[calcdate]) on [primary];

建立索引的原則:

1) 定義主鍵的資料列一定要建立索引。

2) 定義有外來鍵的資料列一定要建立索引。

3) 對於經常查詢的資料列最好建立索引。

4) 對於需要在指定範圍內的快速或頻繁查詢的資料列;

5) 經常用在where子句中的資料列。

6) 經常出現在關鍵字order by、group by、distinct後面的字段,建立索引。如果建立的是復合索引,索引的字段順序要和這些關鍵字後面的字段順序一致,否則索引不會被使用。

7) 對於那些查詢中很少涉及的列,重複值比較多的列不要建立索引。

8) 對於定義為text、image和bit的資料型別的列不要建立索引。

9) 對於經常訪問的列避免建立索引 

9) 限制表上的索引數目。對乙個存在大量更新操作的表,所建索引的數目一般不要超過3個,最多不要超過5個。索引雖說提高了訪問速度,但太多索引會影響資料的更新操作。

10) 對復合索引,按照欄位在查詢條件**現的頻度建立索引。在復合索引中,記錄首先按照第乙個字段排序。對於在第乙個欄位上取值相同的記錄,系統再按照第二個欄位的取值排序,以此類推。因此只有復合索引的第乙個字段出現在查詢條件中,該索引才可能被使用,因此將應用頻度高的字段,放置在復合索引的前面,會使系統最大可能地使用此索引,發揮索引的作用。

為已經存在的表上建立索引

1 使用 alter table 語句建立索引 在book表中的bookname欄位上建立名為bknameidx的普通索引 mariadb vincen alter table book add index bknameidx bookname 30 格式 alter table 資料表名 add ...

mysql 表 索引 mysql 為表新增索引

索引作用 在索引列上,除了上面提到的有序查詢之外,資料庫利用各種各樣的快速定位技術,能夠大大提高查詢效率。特別是當資料量非常大,查詢涉及多個表時,使用索引往往能使查詢速度加快成千上萬倍。例如,有3個未索引的表t1 t2 t3,分別只包含列c1 c2 c3,每個表分別含有1000行資料組成,指為1 1...

建立表的索引

索引是乙個列表,這個列表中包含了某個表中一列或若干列的集合以及這些值的記錄在資料表中儲存位置的實體地址。索引是依賴於表建立的,提供了資料庫中編排表中資料的內部方法。1.索引的作用 1 可以加快資料的檢索速度,這也是建立索引的最主要原因。2 通過建立唯一性索引,可以確保表中每一行資料的唯一性。3 可以...