1. 程式人生 > 其它 >sql server索引

sql server索引

【索引型別】

唯一索引:唯一索引不允許兩行具有相同的索引值

主鍵索引:是唯一索引的特殊型別

聚集索引:表中的各行的物理順序與鍵值的邏輯(索引)順序相同

注意:一張表中值允許有一個欄位作為聚聚索引

缺點:當新增或者刪除資料時,影響更新效率,因為不管是新增還是刪除,那麼表中所有的資料會重新排序

非聚聚索引:非聚集索引指定表的邏輯順序

注意:根據資料頁來排序,一個表中可以有多個非聚集索引

【判斷索引存在則刪除】

--語法:sysindexes表是存系統的索引表

if exists(select*from sysindexes where name='索引名')
drop 表名.索引名
go


--示列
if
exists(select*from sysindexes where name='idx_dapperdata_email') drop index dapper_data.idx_dapperdata_email go

【建立索引sql語法】

非聚集索引:

---fillfactor  0--100:表示索引頁填充的百分比 設定填充因子的值,如果設定為100表示,把每個索引頁都要填充滿,這會降低新增資料的時候的效率,儘量不要讓索引頁每頁都填滿
create nonclustered index  索引名
on 表名稱(欄位名)
with fillfactor=30

---給dapp_data表的email欄位建立名字叫做idx_dapperdata_email的非聚集索引
create nonclustered index idx_dapperdata_email on dapper_data(email) with fillfactor
=30

【刪除索引】

---語法
drop index 表名.索引名稱

---示列
drop index dapper_data.idx_dapperdata_email

【索引查詢】

---語法
select
*from 表名 with(index=索引名) where 條件

--示範:可以直接查詢,沒必要加索引名
select*from DAPPER_DATA with(index=idx_dapperdata_email) where email like'dfothergill0%'

【索引的優缺點】

優點:加快訪問速度,加強行的唯一性

缺點:帶索引的表在資料庫中需要更多的儲存空間,操作資料的命令需要更長的處理時間,

因為它們需要對索引進行更新;

【索引索引注意事項】

  • 查詢時減少使用*返回全部列,不要返回不需要的列
  • 索引應該儘量小,在位元組數小的列上建立索引
  • where子句中有多個條件表示式時,包含索引的表示式應置於其他體條件之前
  • 避免在order by子句中使用表示式
  • 根據業務資料發生頻率,定期重新生成或重新組織索引,進行鎖片整理
  • name like‘%章’,這種索引不起作用,name like‘章%’這種name索引起作用
  • name=‘張三’and 價格>300 ,name 索引起作用,name=‘張三’or 價格>300 ,name索引不起作用,因為or會引起全部掃描,同理,in 和or的的會引起全表掃碼selec*from table1 where name in(‘小李’,‘小張’)和select*from table1 where name=‘小李’ or name'小章'是等價的,即便name上有索引,索引也不起作用
  • 少用not
  • 參考文獻:SQL Server - 索引詳細教程 (聚集索引,非聚集索引) - frank_cui - 部落格園 (cnblogs.com)

【檢視索引】

-----查看錶的索引資訊

exec sp_helpindex 表面或檢視名

----使用檢視sys.indexes 檢視索引

select*from sys.indexes

--檢視myschool資料庫中全部索引資訊

use myschool

select*from sys.indexes

【學習地址】

SQL Server資料庫高階教程 | 邯鄲翱翔教育_嗶哩嗶哩_bilibili