什么是SQL优化?

120 2024-11-06 08:23

一、什么是SQL优化?

前言

现在无论是去BATJ面试还是去小公司面试,都避免不了被面试官问SQL优化的问题。SQL优化已经成为衡量程序猿优秀与否的硬性指标,甚至某些公司招聘时,在岗位职能上都有明码标注,这也就更证明了掌握SQL优化技能的重要性。

SQL优化很重要

可能有些小伙伴会产生疑问:SQL的优化真的这么重要吗?答案是肯定的,SQL优化不是重要,而是相当重要,太重要了…

不知道各位小伙伴有没有了解过如何优化MySQL数据库,如果想优化数据库无非是通过四种方式:提升硬件;调整系统配置;重构数据库表结构;SQL优化及使用索引。我们来给这四种优化方式排个序

按优化成本排序:提升硬件 > 调整系统配置 > 重构数据库表结构 > SQL优化及使用索引

按优化效果排序:SQL优化及使用索引 > 重构数据库表结构 > 调整系统配置 > 提升硬件

通过上面的排序,相信各位小伙伴也看出来了,通过优化SQL或者使用索引是成本最低且效果最好的数据库优化方式~ 想想看,如果你在团队里搞SQL优化是最6的,那一定可以让团队开发的系统在可用性方面得到一个质的跨越,还能帮助你们老板省下很多票子 。

今天给大家推荐的这份SQL优化良方里,关于如何缩短SQL调优时间,给出了三个步骤,

  1. 先获取有助调优的数据库整体信息
  2. 快速获取SQL运行台前信息
  3. 快速获取SQL关联幕后信息

其实我们日常,这些步骤,或多或少都会用,但往往缺乏系统的梳理,想到哪儿,做到哪儿,有时还是需要方法论的指导,这份文档进行了整理,而且给出了一键生成的脚本,非常实用——点此免费领取【传送门】在这本文里,全方位详解了SQL性能优化之道,相信大家看完定会感到受益良多!

目录展示

内容展示

MySQL 性能优化的21个最佳实践

在应用开发的早期,数据量少,开发人员开发功能时更重视功能上的实现,随着生产数据的增长,很多 SQL语句开始暴露出性能问题,对生产的影响也越来越大,有时可能这些有问题的 SQL 就是整个系统性能的瓶颈

二、sql优化的优点?

优化的意义:

优化成本:硬件>系统配置>数据库表结构>sql及索引

优化效果:硬件<系统配置<数据库结构<sql及索引

三、优化SQL有什么方法?

SQL常见优化Sql查询性能的方法有哪些

可以通过如下方法来优化查询1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要.2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)3、升级硬件4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段

四、sql怎么优化case when?

casewhen0then‘是’when1then‘否’;一般情况下在查询语句中用,根居不同的数据结果查询转换成自己想要的类型;楼主的情况,建议用存储过程,写if语法来做处理

五、sql优化面试怎么回答?

您好,1. 了解业务需求:在优化 SQL 之前,需要了解业务需求,明确查询的目的和数据量,然后针对性地进行优化。

2. 优化查询语句:通过对查询语句进行优化,可以减少查询时间和资源的消耗。可以使用索引、优化 JOIN 操作、避免使用子查询等方法。

3. 优化表结构:优化表结构可以提高查询效率,如合理划分表、分区表、使用数据类型等。

4. 缓存数据:将经常被查询的数据缓存到内存中,可以减少数据库的访问次数,提高查询速度。

5. 分库分表:当单表数据量过大时,可以考虑将数据分散到多个库或表中,以提高查询效率。

6. 优化数据库配置:对数据库的配置进行优化,如调整缓存大小、线程池大小等,可以提高数据库的性能。

7. 监控和调优:定期对数据库进行监控和调优,及时发现并解决性能问题,提高系统的稳定性和可靠性。

8. 了解 SQL 执行计划:了解 SQL 执行计划,可以更好地优化查询语句,减少资源的消耗。

9. 使用工具进行优化:可以使用一些数据库性能优化工具,如 MySQL Tuner、pt-query-digest 等,帮助定位性能问题并进行优化。

10. 持续优化:数据库性能优化是一个持续的过程,需要不断地进行监控和调优,以保证系统的高效运行。

六、sql 优化的标准是什么?

如果题主想问的是放之四海而皆准的优化方法,那很抱歉,并没有。

如果题主问的是SQL优化的目的,那么我可以回答一下。

个人认为有两个方向:1.更快的执行速度;2.更低的资源消耗。

这两个方向虽然有很大的联系,但绝不是一回事。

比如开启并行,就是典型的以资源换时间的做法。

七、sql优化除了索引还有可以怎么优化?

1、主键就是聚集索引2、只要建立索引就能显著提高查询速度3、把所有需要提高查询速度的字段都加进聚集索引,以提高查询速度(四)其他书上没有的索引使用经验总结1、用聚合索引比用不是聚合索引的主键速度快2、用聚合索引比用一般的主键作order by时速度快,特别是在小数据量情况下3、使用聚合索引内的时间段,搜索时间会按数据占整个数据表的百分比成比例减少,而无论聚合索引使用了多少个4 、日期列不会因为有分秒的输入而减慢查询速度(五)其他注意事项1. 不要索引常用的小型表2. 不要把社会保障号码(SSN)或身份证号码(ID)选作键3. 不要用用户的键4. 不要索引 memo/notes 字段和不要索引大型文本字段(许多字符)5. 使用系统生成的主键二、改善SQL语句1、Like语句是否属于SARG取决于所使用的通配符的类型2、or 会引起全表扫描3、非操作符、函数引起的不满足SARG形式的语句4、IN 的作用相当与OR

八、如何进行SQL性能优化?

一、使用索引 1.单表索引建议控制在5个以内 2.单索引字段数不允许超过5个因为字段超过5个时,实际已经起不到有效过滤数据的作用了。 3.禁止在更新十分频繁、区分度不高的属性上建立索引,因为更新会变更B+树,更新频繁的字段建立索引会大大降低数据库性能。 4.性别”这种区分度不大的属性,建立索引是没有什么意义的,不能有效过滤数据,性 能与全表扫描类似。 5.建立组合索引,必须把区分度高的字段放在前面,因为能够更加有效的过滤数据。

二、SQL使用规范优化 1.禁止使用SELECT *,只获取必要的字段,需要显示说明列属性。

1.1读取不需要的列会增加CPU、IO、NET消耗。 1.2不能有效的利用覆盖索引。 2.禁止使用INSERT INTO t_xxx VALUES(xxx),必须显示指定插入的列属性。 2.1容易在增加或者删除字段后出现程序BUG。 3.禁止使用属性隐式转换。 3.1 SELECT uid FROM t_user WHERE phone=13812345678 会导致全表扫描,而不 能命中phone索引。 4.禁止在WHERE条件的属性上使用函数或者表达式。 4.1SELECT uid FROM t_user WHERE from_unixtime(day)>='2019-07-15' 会导致全 表扫描。 4.2正确的写法是:SELECT uid FROM t_user WHERE day>= unix_timestamp('2019-07-15 00:00:00')。 5.禁止负向查询,以及%开头的模糊查询。 5.1 负向查询条件:NOT、!=、<>、!<、!>、NOT IN、NOT LIKE等,会导致全表扫描。 5.2 %开头的模糊查询,会导致全表扫描。 6.禁止大表使用JOIN查询,禁止大表使用子查询。 6.1会产生临时表,消耗较多内存与CPU,极大影响数据库性能。 7.禁止使用OR条件,必须改为IN查询。 7.1旧版本Mysql的OR查询是不能命中索引的,即使能命中索引,为何要让数据库耗费 更多的CPU帮助实施查询优化呢? 8.应用程序必须捕获SQL异常,并有相应处理 总结:大数据量高并发的互联网业务,极大影响数据库性能的都不能用哦。

九、SQL数据库如何优化?

化总结如下:1、主键就是聚集索引2、只要建立索引就能显著提高查询速度3、把所有需要提高查询速度的字段都加进聚集索引,以提高查询速度注意事项1. 不要索引常用的小型表2. 不要把社会保障号码(SSN)或身份证号码(ID)选作键3. 不要用用户的键4. 不要索引 memo/notes 字段和不要索引大型文本字段(许多字符)5. 使用系统生成的主键

十、sql优化常用面试题?

1.在表中建立索引,优先考虑 where group by 使用到的字段

2.查询时尽量避免使用select * ,只查询需要用到的字段

3.避免在where子句中使用关键字两边都是%的模糊查询,尽量在关键字后使用模糊查询

4.尽量避免在where子句中使用IN 和NOT IN

优化:能使用between就不用in

在子查询中使用exists 子句

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片