SQL 索引

  1. 查看索引
    exec sp_helpindex tablename
  2. 删除索引
    drop index index_name on table_name
  3. 创建索引
    复制代码
    1 --唯一 聚集索引
    2 CREATE UNIQUE CLUSTERED INDEX indexName ON tableName(column_name[asc,desc]) 
    3 --不唯一 非聚集索引
    4 CREATE  NONCLUSTERED INDEX indexName ON tableName(column_name[asc,desc])
    5 --唯一 非聚集索 
    6 CREATE   UNIQUE NONCLUSTERED indexName ON tableName(column_name[asc,desc])

    临时表也可以直接创建
    CREATE NONCLUSTERED INDEX IDX_tme
    ON  #temp(column_name1)
    INCLUDE (column2,column3)
    注:
    1、聚集索引每个表只能有一个;
    2、如果索引有多列,第一个列才会用到索引查找,其余的是索引扫描;
    3、INCLUDE是索引包含列,不会进行表排序
    create index idx_A on A(biz_date)  include(name,id)
    复制代码
  4. 显示估计的执行计划
    复制代码
    [Table Scan] 表扫描(最慢),对表记录逐行进行检查
    [Clustered Index Scan] 聚集索引扫描(较慢),按聚集索引对记录逐行进行检查
    [Index Scan] 索引扫描(普通),根据索引滤出部分数据在进行逐行检查
    [Index Seek] 索引查找(较快),根据索引定位记录所在位置再取出记录
    [Clustered Index Seek] 聚集索引查找(最快),直接根据聚集索引获取记录
    复制代码
  5. 命名规范
    主键索引名为pk_字段名;唯一索引名为uk_字段名;普通索引名则为idx_字段名
  6. 查看效率
    DBCC DROPCLEANBUFFERS  --清除缓冲区
    DBCC FREEPROCCACHE  --删除计划高速缓存中的元素
    --清缓存生产慎用
    
    SET STATISTICS TIME ON --执行时间
    SET STATISTICS IO ON--执行IO
    select * from test
    SET STATISTICS IO OFF
  7. 查看索引所占空间
    exec sp_spaceused 'index'
  8. 创建索引视图
    复制代码
    create view v_customer_sch_index with schemabinding
    as
    select Col1,Col2 from dbo.test
    go
    
    create unique clustered index cust_uniquetb on v_customer_sch_index(Col1)
    注:索引视图创建的第一个索引必须是唯一聚集索引
    
    强制走视图索引
    select * from test with(noexpand)
    复制代码
posted @   疯狂阿坤  阅读(151)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示