SQL性能优化

前言:今天为大家介绍一个比较重要的问题,sql性能优化

在操作数据库是如何使sql语句效率更高是一个非常重要的问题,下面我将为大家总结一下性能优化问题。

SQL性能优化

1、SELECT 语句务必指明字段名称

SELECT * 会增加很多不必要的消耗,(cpu、io、内存、网络带宽);增加了使用覆盖索引的可能性;

当表结构发生改变时,前断也需要更新。所以要求直接在select后面接上字段名。

2、SQL语句中IN包含的值不应太多

MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好序的。

但是如果数值较多,产生的消耗也是比较大的。对于连续的数值,能用 between 就不要用 in 了;再或者使用连接来替换。

3、区分in和exists,not in 和not exists

select * from 表A where id in (select id from 表B)

登录后复制

等价于

select * from 表A where exists(select * from 表B where 表B.id=表A.id)

登录后复制

区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询。

所以IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。

4、不建议使用%前缀模糊查询

例如LIKE “%name”或者LIKE “%name%”,这种查询会导致索引失效而进行全表扫描。但是可以使用LIKE “name%”。

避免隐式类型转换:

where子句中出现 column 字段的类型和传入的参数类型不一致的时候发生的类型转换,建议先确定where中的参数类型

5、对于联合索引来说,要遵循最左前缀法则

举列来说索引含有字段id,name,school,可以直接用id字段,也可以id,name这样的顺序,但是name;school都无法使用这个索引。

所以在创建联合索引的时候一定要注意索引字段顺序,常用的查询字段放在最前面

总结以上建议:

1、避免对索引字段进行计算操作 

2、避免在索引字段上使用 not != 

3、避免在索引字段上使用 is null , is not null 

3、避免在索引字段上出现数据类型转换 

4、避免在索引字段上使用函数 

5、避免建立索引的列中使用空值

6、对与WHERE的语句法则 

7、尽量避免在WHERE子句中使用in, not in 或者 having ,可以使用exist ,not exist 代替 in ,not in

8、不要以字符格式声明数字, 不要以数字格式声明字符值,否则会使索引无效 

以上是为大家总结的一些问题,更多问题请访问PHP中文网相应教程:https://www.php.cn/course/list/51/type/2.html

以上就是SQL性能优化的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2021113.html

(0)
上一篇 2025年2月23日 19:12:14
下一篇 2025年2月23日 19:12:31

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Redis作为消息队列的性能优化策略

    随着互联网和移动互联网的快速发展,大量的信息需要在系统之间传输和处理。为了有效地处理这些信息并保证系统的可靠性,消息队列成为了一种非常流行的解决方案。redis作为一种高性能的数据缓存和消息队列系统,具有很高的可用性和可靠性,在应用中得到了…

    数据库 2025年2月23日
    100
  • Redis在高并发场景下的性能优化策略

    redis是一款开源的键值对存储数据库,能够支持多种数据结构,并且具有高性能和高可用性。在高并发场景下,redis的性能优化策略显得格外重要。本文将介绍一些redis在高并发场景下的性能优化策略。 一、Redis内置命令的优化 Redis内…

    数据库 2025年2月23日
    100
  • Redis在游戏中的应用探索

    Redis在游戏中的应用探索 近年来,随着游戏行业的蓬勃发展,游戏服务器的并发访问量也越来越大。为了实现稳定的游戏运行和高效的数据处理,开发者们开始寻求一种快速、可靠且易于使用的数据库解决方案。而Redis作为一款高性能的内存数据库,正逐渐…

    2025年2月23日
    100
  • 学习PHP7的革新与性能优化

    PHP已经走过了20年的历史,PHP7对于上一个系列的PHP5,可以说是一个大规模的革新,尤其是在性能方面实现跨越式的大幅提升。PHP是一种在全球范围内被广泛使用的Web开发语言,PHP7的革新也当然会给这些Web服务带来更深刻的变化。 这…

    2025年2月23日 编程技术
    200
  • 了解php7如何达到最高性能

    PHP7已经发布了, 作为PHP10年来最大的版本升级, 最大的性能升级, PHP7在多放的测试中都表现出很明显的性能提升, 然而, 为了让它能发挥出最大的性能, 我还是有几件事想提醒下。 1. Opcache 记得启用Zend Opcac…

    2025年2月23日
    200
  • 如何使用PHP7.0进行性能优化?

    在当前互联网高速发展的背景下,网站的性能一直是一个非常关键的话题。如何让我们的网站更快、更流畅,是很多web开发人员所追求的目标。与此同时,php作为一种广泛应用的服务器端语言,也面临着优化的挑战。本文将介绍如何利用php7.0进行性能优化…

    编程技术 2025年2月23日
    200
  • PHP7.0中的ORM性能优化有哪些实现方式?

    随着互联网应用的不断发展,网站的访问量和数据量也在逐渐增大,如何保持应用的高性能和可伸缩性已经成为了开发者必须关注的重点。在现代web开发中,orm(object relational mapping)技术被广泛使用。orm技术将对象与关系…

    编程技术 2025年2月23日
    200
  • PHP7中新增的可选的严格模式:如何提升代码的质量和性能?

    PHP7中新增了可选的严格模式,这一新增功能可以帮助开发者提升代码的质量和性能。本文将通过介绍严格模式的特点和具体使用示例,帮助读者理解如何利用严格模式来提升代码质量和性能。 一、严格模式的特点严格模式是PHP7新增的一个特性,它通过一系列…

    2025年2月23日
    200
  • PHP如何进行正则表达式的性能优化?

    php是一种强大的服务器端脚本语言,正则表达式是其中一个非常重要的特性。然而,由于正则表达式的复杂性和性能消耗,开发人员在使用正则表达式时需要注意性能优化的问题。 正则表达式是一种用来匹配和处理字符串的模式,它可以用于搜索、替换、验证等操作…

    编程技术 2025年2月23日
    200
  • 如何处理PHP开发中的内存溢出问题

    如何处理php开发中的内存溢出问题 概述:PHP作为一种流行的服务器端脚本语言,在Web开发中被广泛使用。然而,PHP开发者经常会面临内存溢出问题,这可能导致应用程序崩溃、性能下降或资源浪费。因此,有效地处理PHP开发中的内存溢出问题对于保…

    编程技术 2025年2月23日
    200

发表回复

登录后才能评论