SQL反模式学习笔记13 使用索引
目标:优化性能
改善性能最好的技术就是在数据库中合理地使用索引。
索引也是数据结构,它能使数据库将指定列中的某个值快速定位在相应的行。
反模式:无规划的使用索引
1、不使用索引或索引不足
2、使用了太多的索引或一些无效的索引
(1)大多数数据库会自动地位主键建立索引,因此额外再定义一个索引就是冗余。
这个额外的索引并无任何好处,它只会成为额外的开销。
(2)字符串索引很大,而且也不太可能对它进行全匹配查找。
(3)使用组合索引是一个很好的选择,但是大部分创建的组合索引都是冗余或者很少使用。
组合索引的顺序也很重要:在查询条件、联合条件或者排序规则上使用索引时按照从左到右的顺序。
3、执行了一些让索引无能为力的查询
Like、表达式,都可能使索引无效。
如何识别反模式:当出现以下情况时,可能是反模式
1、这是我的查询语句,怎样使它更快?
2、我在每个字段上都定义了索引,为什么它没有变的更?
3、我听说索引会使数据库变慢,所以我不使用它。
合理使用反模式:
分离率是衡量数据库索引的一个指标。分离率越高索引效率就越高。
需要时刻关注你的数据库中索引的分离率,并且抛弃那些低效的索引。
解决方案:MENTOR你的索引
1、Measure测量:大多数数据库都提供了一些方法来记录执行SQL查询的耗时,因此可以来定位最耗时的查询。
2、Explain解释:测量之后,分析查询变慢的原因。
每个数据库都使用一种优化工具为每次查询选择最合适的索引,并生产分析报表,称之为“查询执行计划(QEP)”。
3、Nominate挑选:有了查询优化工具的QEP报表,应该仔细地查找那些没有使用索引的查询操作。
4、Test测试:创建完索引之后,需要重新测试跟踪那些查询,确认你的改动确实提升了性能。
5、Optimize优化:索引是小型的、频繁使用的数据结构,因为很适合将他们常驻在内存中。内存操作的性能是磁盘I/O操作的好几倍。
数据库服务器允许你配置缓存所需要的系统内存大小。
6、Rebuild重组:索引在平衡的时候其效率最高,当你更新或者删除记录时,索引就逐渐变得不平衡。
要想最大限度地使用索引,因此要定期对索引进行维护。
结论:了解你的数据库,了解你的查询,然后MENTOR你的索引。
SQL反模式,系列学习汇总
18、SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题
成在管理,败在经验;嬴在选择,输在不学! 贵在坚持!
个人作品
BIMFace.SDK.NET
开源地址:https://gitee.com/NAlps/BIMFace.SDK
系列博客:https://www.cnblogs.com/SavionZhang/p/11424431.html
系列视频:https://www.cnblogs.com/SavionZhang/p/14258393.html
技术栈
1、Visual Studio、.NET Core/.NET、MVC、Web API、RESTful API、gRPC、SignalR、Java、Python
2、jQuery、Vue.js、Bootstrap、ElementUI
3、数据库:分库分表、读写分离、SQLServer、MySQL、PostgreSQL、Redis、MongoDB、ElasticSearch、达梦DM
4、架构:DDD、ABP、SpringBoot、jFinal
5、环境:跨平台、Windows、Linux、Nginx
6、移动App:Android、IOS、HarmonyOS、微信小程序、钉钉、uni-app、MAUI
分布式、高并发、云原生、微服务、Docker、CI/CD、DevOps、K8S;Dapr、RabbitMQ、Kafka、RPC、Elasticsearch。
欢迎关注作者头条号 张传宁IT讲堂,获取更多IT文章、视频等优质内容。
出处:www.cnblogs.com/SavionZhang
作者:张传宁 技术顾问、培训讲师、微软MCP、系统架构设计师、系统集成项目管理工程师、科技部创新工程师。
专注于企业级通用开发平台、工作流引擎、自动化项目(代码)生成器、SOA 、DDD、 云原生(Docker、微服务、DevOps、CI/CD);PDF、CAD、BIM 审图等研究与应用。
多次参与电子政务、图书教育、生产制造等企业级大型项目研发与管理工作。
熟悉中小企业软件开发过程:可行调研、需求分析、架构设计、编码测试、实施部署、项目管理。通过技术与管理帮助中小企业实现互联网转型升级全流程解决方案。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如有问题,可以通过邮件905442693@qq.com联系。共同交流、互相学习。
如果您觉得文章对您有帮助,请点击文章右下角【推荐】。您的鼓励是作者持续创作的最大动力!