数据库知识学习,数据库设计优化攻略(四)
1.4.7 尽量使用索引
建立索引后,并不是每个查询都会使用索引,在使用索引的情况下,索引的使用效率也会有很大的差别。只要我们在
查询语句中没有强制指定索引,索引的选择和使用方法是 SQLSERVER 的优化器自动作的选择,而它选择的根据是查询语句的
条件以及相关表的统计信息,这就要求我们在写 SQL 语句的时候尽量使得优化器可以使用索引。
为了使得优化器能高效使用索引,写语句的时候应该注意:
➢ 不要对索引字段进行运算,而要想办法做变换,比如
➢ 不要对索引字段进行格式转换
➢ 不要对索引字段使用函数
WHERE LEFT(NAME, 3)=’ABC’ 或者 WHERE SUBSTRING(NAME,1, 3)=’ABC’
➢ 不要对索引字段进行多字段连接
1.4.8 注意连接条件的写法
多表连接的连接条件对索引的选择有着重要的意义,所以我们在写连接条件条件的时候需要特别的注意。
➢ 多表连接的时候,连接条件必须写全,宁可重复,不要缺漏。
➢ 连接条件尽量使用聚集索引
➢ 注意 ON 部分条件和 WHERE 部分条件的区别
1.4.9 其他需要注意的地方
经验表明,问题发现的越早解决的成本越低,很多性能问题可以在编码阶段就发现,为了提早发现性能问题,需要
注意:
➢ 程序员注意、关心各表的数据量。
➢ 编码过程和单元测试过程尽量用数据量较大的数据库测试,最好能用实际数据测试。
➢ 每个 SQL 语句尽量简单
➢ 不要频繁更新有触发器的表的数据
➢ 注意数据库函数的限制以及其性能
1.4.10 学会分辩 SQL 语句的优劣
自己分辨 SQL 语句的优劣非常重要,只有自己能分辨优劣才能写出高效的语句。
➢ 查看 SQL 语句的执行计划,可以在查询分析其使用 CTRL+L 图形化的显示执行计划,一般应该注意百分比最大的几个图
形的属性,把鼠标移动到其上面会显示这个图形的属性,需要注意预计成本的数据,也要注意其标题,一般都是
CLUSTERED INDEX SEEK 、INDEX SEEK 、CLUSTERED INDEX SCAN 、INDEX SCAN 、TABLE SCAN 等,其中出现 SCAN 说
明语句有优化的余地。也可以用语句 SET SHOWPLAN_ALL ON 要执行的语句 SET SHOWPLAN_ALL OFF 查看执行计划
的文本详细信息。
➢ 用事件探查器跟踪系统的运行,可疑跟踪到执行的语句,以及所用的时间,CPU 用量以及 IO 数据,从而分析语句的效率。
➢ 可以用 WINDOWS 的系统性能检测器,关注 CPU、IO 参数
1.5 测试、运行、维护阶段
测试的主要任务是发现并修改系统的问题,其中性能问题也是一个重要的方面。重点应该放在发现有性能问题
的地方,并进行必要的优化。主要进行语句优化、索引优化等。
试运行和维护阶段是在实际的环境下运行系统,发现的问题范围更广,可能涉及操作系统、网络以及多用户并
发环境出现的问题,其优化也扩展到操作系统、网络以及数据库物理存储的优化。
这个阶段的优花方法在这里不再展开,只说明下索引维护的方法:
➢ 可以用 DBCC DBREINDEX 语句或者 SQL SERVER 维护计划设定定时进行索引重建,索引重建的目的是提高索引的效能。
➢ 可以用语句 UPDATE STATISTICS 或者 SQL SERVER 维护计划设定定时进行索引统计信息的更新,其目的是使得统
计信息更能反映实际情况,从而使得优化器选择更合适的索引。
➢ 可以用 DBCC CHECKDB 或者 DBCC CHECKTABLE 语句检查数据库表和索引是否有问题,这两个语句也能修复一般的问题。
相关文章
- 超级计算机预测六夸克粒子存在
- 一日一技:这个使用场景,etcd 比 Redis 强
- 国产高端芯片实力如何?六位资深业内人士这样看
- springboot搭建
- 哈佛大学:未来10年中国将在半导体、生物技术等领域超越美国
- 猫=图灵机?四项测试证明,「猫猫计算机」可执行任意计算
- 等待芯片交付的时间再度拉长 缺货现象料难改善
- 单片机实验2提示
- 单片机实验3提示
- Web3.0是什么?将要重建互联网
- 谷歌让NLP模型也能Debug,只要给一张「草稿纸」就行
- 恒生电子发布金融分布式数据库LightDB,持续助力金融行业信创建设
- 达摩院成功研发存算一体AI芯片,性能提升10倍以上
- 一大波神经元单细胞亚群相关的标志基因
- IDC预测:2027年全球量子计算市场将增长至86亿美元
- 解决Transformer固有缺陷:复旦大学等提出线性复杂度SOFT
- 洞见2022年金融科技技术与应用趋势,恒生电子助力加速金融行业数智化进程
- 用边缘计算为智能制造提速,行业的破局者是他们
- Sentry 监控 - Snuba 数据中台本地开发环境配置实战
- dython来了!