千家信息网

SQL性能优化的示例

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,小编给大家分享一下SQL性能优化的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!SQL性能优化1、SELECT 语句务
千家信息网最后更新 2025年01月31日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、不要以字符格式声明数字, 不要以数字格式声明字符值,否则会使索引无效

以上是"SQL性能优化的示例"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

索引 字段 类型 性能 查询 建议 篇文章 语句 顺序 示例 内容 前缀 参数 外表 子句 字符 情况 数值 数字 数组 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 东昱互联网科技股份有限公司 中国万方全文期刊数据库 软件开发公司妇女节宣传口号 1.12魔兽世界数据库 软件开发中心西安 网络安全宣传周小学生上网 手机软件开发工序 软件开发流程计划书 数据库并列查询语句 贵州网络软件开发定制怎么样 网络安全产品市场前景 软件开发需要哪些技术支持 吴江区专业性网络技术哪家便宜 服务器硬盘多大 南京杰游互联网科技有限公司 小言互联网科技有限公司 计算机网络技术专业哪家好 学软件开发能做什么的 服务器新硬盘保留分区信息 分布式orical数据库 云储存管理节点服务器 网站数据库整合时间 获取服务器的ip 网络安全专业世界学校排名 电脑如何架设为服务器 数据库学生成绩管理系统数据字典 数据库有索引缺全表扫描 软件开发老年人开发 金山区优势软件开发服务商密度 网络技术数学不好能学吗
0