前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库知识学习,数据库设计优化攻略(四)

数据库知识学习,数据库设计优化攻略(四)

作者头像
用户1289394
发布2021-12-13 17:04:41
2190
发布2021-12-13 17:04:41
举报
文章被收录于专栏:Java学习网Java学习网

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 语句检查数据库表和索引是否有问题,这两个语句也能修复一般的问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档