EF Core 建立非聚集索引

2022-06-10 04:00:11 字數 1041 閱讀 5668

一 通過ef**建立

protected override void onmodelcreating(modelbuilder modelbuilder)

);}

二 通過語句建立,及相關注意事項

use [db]

set statistics io on

set statistics io off

----建立非聚集索引

--create nonclustered index nc_orders_doctorname on orders(doctorname)

----建立非聚集索引 關聯的查詢字段

--create nonclustered index nc_orders_doctorname1 on orders(doctorname) include(orderno,doctorname,orderamount) with(online=on,maxdop=2)

-- 多表連線,一般在inner join 左邊的表的id 做索引

--多表連線:第一次查詢的表是少記錄的表,第二次查詢多記錄的表

--索引檢視(一般做在變更不大的表)

--索引個數一般做5個,不要超過10個

先建立聚集索引,再建立非聚集索引

一般為 為主鍵列建立聚集索引,為條件列建立非聚集索引

如果有復合索引,但是條件裡面沒有相關字段,就會執行表掃瞄

建立復合索引時:頻率大的放前面

當有窄列和寬列時,一般對窄列建立聚集索引

使用聚集索引時機:group by ,order by

過濾索引,業務上,肯定會有此條件的時候,

create nonclustered index nc_colname

on orders(indexcolname) include(showcolname1,showcolname2)

with(online=on,maxdop=2)

where isvalid=1 --過濾索引

參考:

聚集索引 非聚集索引

通常情況下,建立索引是加快查詢速度的有效手段。但索引不是萬能的,靠索引並不能實現對所有資料的快速訪問。事實上,如果索引策略和資料檢索需求嚴重不符的話,建立索引反而會降低查詢效能。因此在實際使用當中,應該充分考慮到索引的開銷,包括磁碟空間的開銷及處理開銷 如資源競爭和加鎖 例如,如果資料頻繁的更新或刪...

聚集索引和非聚集索引的區別,何時建立索引

use test go 表 建立 create table aclu a int not null,b char 10 c varchar 10 go 插入資料 insert into aclu select 1,b c union select 5,b c union select 7,b c u...

聚集索引和非聚集索引

聚集索引和非聚集索引 一 聚集索引和非聚集索引 聚集索引和非聚集索引的根本區別是表記錄的排列順序和與索引的排列順序是否一致,聚集索引表記錄的排列順序與索引的排列順序一致,優點是查詢速度快,因為一旦具有第乙個索引值的紀錄被找到,具有連續索引值的記錄也一定物理的緊跟其後。聚集索引的缺點是對錶進行修改速度...