数据库索引优化

一,数据库执行T-SQL得过程以及功能

在这里插入图片描述

执行计划 : 可以缓存,存储过程/参数化查询

二, 构成数据库得存储机制
  • 数据页(Page):8kb/page 任何一条数据不能跨页存储:数据长度不能超过8096,char varchar max就是8096,text存储超过8kb,会存在另外一个page,数据页只存储位置(效率肯定很低),int/DateTime:可以放入一个page(设计数据库时候,字段类型空间范围尽量小一点),
    在这里插入图片描述
  • 管理数据页(IAM Page):记录好数据页在硬盘得具体位置
  • 文本/图像页
  • 索引页:数据&位置(索引是一个独立的,重复的存储;体积小,扫描快)
三, 索引
  • 聚集索引(聚簇索引)[新华字典文字排序都是按字母顺序]
    1.把数据有序得摆放,物理排序
    2.SqlServer 自增int,默认聚集索引,所以查询不排序就是id排序
    3.聚集索引只有一个,但是可以有多个字段
    4.一般是自增主键/创建时间/价格
    5.因为数据物理排序,当然查询快!
    6.非常适合大于 小于 between 还有order by
    7.聚集索引不能运算,不能like’% %’ 索引条件在前

  • 非聚集索引[偏旁部首找字–找页码–看详情]
    1.不影响数据的物理排序,但是重复存储一个数据和位置
    2.找数据:先找索引–快速定位–拿到数据
    3.查找快,但是有维护索引的成本,不是越多越好
    4.适合经常查询的字段,名称/账号
    5.非聚集索引不能运算,不能like’% %’,索引条件在前

  • 建立索引的原则/建议:
    1.主键是必须建立索引的(推荐数值主键,性能最高)
    2.外键列也要索引
    3.经常查询的建立索引
    4.重复值比较多的不要索引(sex/state)
    5.text/image 不要索引
    6.索引数量不宜过多
    7. order by / group by /distinct
    8. 聚合运算/where条件时,先索引字段
    9. 基本不怎么查询
    10.经常在where里面

  • 执行计划:提交sql语句,数据库查询优化器,经过分析生成,制定多个查询方式,从中选择资源使用最少的,数据库制定执行计划是按照使用资源最少,而不是时间最短

在这里插入图片描述

  • (Sql SerVer)五种执行计划的类型
    1.Table Scan 全表扫描 性能最差
    2.Cluster Index Scan 性能最差,同上 虽然有聚集索引,其实也是全表扫描
    3.Index Seek(NonClustered) 性能非常高
    4.Index Scan 先index,再扫描
    5.Cluster Index Seek 性能最高

建立: 一般SQL出了问题,看看执行计划,找出scan,换索引,看效果,尝试

发布了31 篇原创文章 · 获赞 0 · 访问量 699
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览