面试官:你做过哪些SQL优化?

作者: 托尼学长1分类: 计算机技术 发布时间: 2023-11-13 00:35:48 浏览:20737 次

面试官:你做过哪些SQL优化?

爱像深蓝:
up这样优化是有问题的。id>xx limit 30,并不是完全替代 limit xxx,30. 首先你 id 必须是连续的,那这样就有一个问题,你小于xxx的记录就不能有不连续的。limit xxx 是你过滤掉xxx条。而你用大小于比过滤小于xxx的。但问题在于小于的这个xxx中有不连续的这时你就查询 就有问题。 除非用假性删除,而且id是连续的你这张表的删除没问题。但如果不是这样你这查询就是错的。 还有另一个问题,你insert into 的多行插入也有问题,很简单多行插入是原子操作,多行插入如果不是上下文关系,即多条数据之间在上下游关系,那你只要有一条数据插入失败对其它数据并无任何影响。多行插入类似mysql的语法糖,所以mysql会默认为其开启事务。你的初衷的优化写入速度,但问题来了,如果你插入的数据有1万条,但只有几条是错误的,就够你喝一壶,报错只会是你有问题的那一条,即1万条记录有5条错的,但只会告诉你错的第一条,因为后面就直接结束了,并不会一次把五条错误记录都告诉你,那这样你要正确的插入这1万条的时间别人一条条插入早就执行完了。你这是偷鸡不成失把米。不可取。ijnsert 多行插入适用的场景是多条存在上下游关系的记录,而不是你这样仅仅只是为了优化而乱用。

【回复】回复 @B站智能冲浪高手 : 胡说,中间有不连续的,你order by id 是没有用的。动脑子想想吧,id开始的时候可能是1,2,3这样连续的。如果你把2给删除了,那1,3你order by 升序再limit根本就是错的,比方10条记录一页,本来第一页同1,2,3,-10,但2被删除了,where id > 0 limit 10的话,就是1,2,11 而第二次则是id > 10 limit 10这样第一次和第二次都包含了11后面的也就全错了。当然你可以把2删除时使用标记位假性删除,这样2这条记录还在里面,最后再where status <> -1(假如-1是删除标记).
【回复】回复 @B站智能冲浪高手 :你这种正是up主所认为不对的。就是不要limit一个具体的的值,他说的是where id > 因为你limit 后面的数字越大查询是非常慢的。如果limit 100000或1000万再去限制,10比方说10条,速度也很慢。你这脑子真的要好好再想想。多看看视频吧,连up说啥都不清楚,就别胡说了。
【回复】回复 @库森学长 : 不好意思,我只是对事情,指出你这里面不对的地方,如有冒犯请见谅。
啾来啾去:
讲的很实际,但是为什么只有480p呢[笑哭]

【回复】如果id要是无序的还可以深分页吗?[doge]
【回复】回复 @库森学长 :up需要高清录屏软件搜一下ev录屏
【回复】回复 @温柔的回响 :嗯嗯,现在会了,之前被压缩了,谢谢提醒
AI视频小助理:
一、SQL优化的多种技巧,包括巧用limit、使用trunk数据类型、强制化适当的索引策略等,通过理论结合实践的方式给面试官留下深刻印象。 00:01 - 介绍SQL优化的子集,重点讲解如何进行SQL优化 00:34 - 给出一个小窍门,建议在回答面试官问题时结合自己的项目实践经验 02:09 - 列举了15种SQL优化技巧,包括巧用limit、最小可用for index、强制化适当的索引策略等 二、在SQL中如何通过各种手段来优化查询性能,包括全模糊查询、使用E替代、善用join等,同时也提醒了使用exist和in的注意事项。 03:02 - 查询方式或表结构设计上避免全模糊查询或左边出现百分号 03:18 - 使用E进行替代三优点加个or 04:15 - 使用join获取更好的性能,注意使用慎重 三、十种提高SQL效率的方法,包括使用track删除表、批量操作、先过滤后操作、函数写在右侧、最小数据类型等。 06:00 - track直接删除表性能高,但删除操作不记录日志,不能回滚 06:40 - 批量操作比单条插入效率高,减少IO交互和解析开销 07:53 - 使用最小数据类型可以提高SQL执行速度,但要确保不低估数据范围 四、SQL查询优化中的索引策略和多表关联控制量,以及如何使用FOCDEX强制指定索引来优化查询性能。 09:02 - 误差变长时,设置较大的误差值可优化SQL排序性能 09:39 - 频繁作为查询条件的字段应创建索引,频繁更新的字段不适合创建索引 11:09 - 多表关联需要控制量,但不需要完全一杆子拍死 --本内容由AI视频小助理生成,关注解锁AI助理,由@生命是用来绽放的 召唤发送

舞动在指尖的精灵:
不加索引,不想方设法让索引生效,优化的再好也没用。[doge]

__出发:
已三连,不仅有结论,更有底层的原因讲解,感谢Up

Anjol:
能不能把封面的脑图搞成高清的啊,up?

【回复】回复 @库森学长 :看到啦,看起来好多啦,谢谢 up[呲牙]
【回复】好的,我下次注意哈,这次脑图没留备份,不太好改了。
srylyx:
内容不错,但是bgm有种我不学就要被优化掉的感觉

谭个球:
如果id要是无序的还可以深分页吗?[doge]

【回复】id无序的话其实可以用一个创建时间字段代替[doge][doge]效果一样的
风一般de年华:
想请问下,left('环球资讯',4)结果不是跟直接写'环球资讯'一样?

篱山良子:
优化?你这个还是一般,从原理出发,执行计划瓶颈判断,分表分库,参数调优……

SCP-929:
可否整个字幕,b站应该有自动转字幕的功能开关吧

【回复】您好,视频有字幕的啊(⌒▽⌒)
【回复】回复 @SCP-929 :哦哦,我说呢
【回复】回复 @库森学长 :后来看到字幕了,其实是有一段是没字幕,我就来评论了[脱单doge]

编程语言 数据库 SQL 面试 面试官 MySQL

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!