Sql优化,面试经验总结
(1)列优先

如图有表A和表B
对其查询时,会有如下语句:
select a.*,b.*
from a,b
where a.id = b.a_id;
注意from 后边的表名,
a.如果多表查询是完全无关系的话,将记录和列名最少的表(from后靠右的位置接列少的表),写在最后,然后依次类推
b.如果多表查询是有关系的话,将引用最多的表(from后靠右的位置接列多的表),放在最后,然后依次类推
这样速度会有所提高.
(2)where子句中的连接顺序(where也采用从右往左解析)
当使用where子句连接的时候,要将可以过滤掉最大数量记录的条件写在WHERE子句的最右
例如
select emp.empno,emp.ename,emp.sal,dept.dname
from emp,dept
where (emp.deptno = dept.deptno) and (emp.sal > 1500)
这样,可以过滤掉大量数据后,在执行其他条件,可以提高效率
(3)减少使用 * 代替列名
select * from user;
要写成 select userID ,userName,userSalary from user;
因为使用* ,数据库还得查询数据字典,然后解析列名,直接写列名会调高效率.
(04)删除所有记录都得时候,用TRUNCATE替代DELETE
因为delete删除表时,会扫描整个表,然后再一条一条删除
而TRUNCATE table user; 是一次性删除整个表的所有内容,会提高效率.
(05)尽量多使用COMMIT
因为COMMIT会释放回滚点 callback
(06)用WHERE子句替换HAVING子句
WHERE先执行,HAVING后执行
因为having会先分组,比较占内存.
(07)多使用内部函数提高SQL效率
例如多用concat连接,代替'||' 的符号连接
(08)表明过长时,尽量使用表的别名
例如 salgrade s 长表名更加的耗费扫描时间
(09)使用列的别名
例如 :ename e 同表名
Sql优化,面试经验总结的更多相关文章
- SQL优化汇总
今天面某家公司,然后问我SQL优化,感觉有点忘了,今天特此总结一下: 总结得是分两方面:索引优化和查询优化: 一. 索引优化: 1. 独立的列 在进行查询时,索引列不能是表达式的一部分,也不能是函数的 ...
- 面试官:不会sql优化?出门右转顺便带上门,谢谢
导读 作为一个后端程序员,数据库这个东西是绕不开的,特别是写sql的能力,如果您参加过多次面试,那么一定会从面试复盘中发现面试官总是会考察到sql优化这个东西. 我在之前的多次面试中最常遇到的一个问题 ...
- MySQL优化篇(一),我可以和面试官多聊几句吗?——SQL优化流程与优化数据库对象
我可以和面试官多聊几句吗?只是想偷点技能过来.MySQL优化篇(基于MySQL8.0测试验证),上部分:优化SQL语句.数据库对象,MyISAM表锁和InnoDB锁问题. MyISAM表锁和InnoD ...
- 面试被问之-----sql优化中in与exists的区别
曾经一次去面试,被问及in与exists的区别,记得当时是这么回答的:''in后面接子查询或者(xx,xx,xx,,,),exists后面需要一个true或者false的结果",当然这么说也 ...
- SQL优化经验
SQL 优化经验总结34条 我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习.摘录.并汇总部分资料与大家分享! (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效 ...
- SQL优化经验总结
一. 优化SQL步骤 1. 通过 show status和应用特点了解各种 SQL的执行频率 通过 SHOW STATUS 可以提供服务器状态信息,也可以使用 mysqladmin extend ...
- 当面试官问你sql优化的时候。。。
当面试官问你有关sql优化的问题时,直接拿笔写给他: 8-select 9-distinct<column_list> 1-from left_table 3-<join_type& ...
- 面试:做过sql优化吗?
近来面试找工作经常会遇见这种问题: 做过数据库优化吗?大数据量基础过吗?系统反应慢怎么查询? 这咱也没背过啊,面试还老问,现在的网站主要的压力都来自于数据库,频繁的数据库访问经常会使系统瘫痪,这样就需 ...
- 兄弟连教育分享-SQL性能优化十条经验
1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE '%parm1%'——红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 兄弟连教育分享-SQL性能优化十条经验 解决办法: 其 ...
随机推荐
- 淘宝开源Web服务器Tengine基本安装步骤
Tengine 是由淘宝核心系统部基于Nginx开发的Web服务器,它在Nginx的基础上,针对大访问量 网站的需求,添加了很多功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,淘宝商 ...
- Docker for windows 7 - 加载 docker images
背景 由于之前一直是在 Linux 上面跑,所以对于docker for windows 部分不是很熟. 由于我们的合作伙伴需要在windows 上面跑我们的docker image, 所以在自己的w ...
- ceph集群jewel版本 rbd 块map 报错-故障排查
测试信息如下: [root@ceph_1 ~]# ceph osd pool lsrbdchy_123swimmingpool #新建rbd 块: rbd create swimmingpool/ba ...
- Django组件—forms组件
forms组件: 校验字段功能: 针对一个实例:注册用户. 模型:models.py class UserInfo(models.Model): name=models.CharField(max_l ...
- PHP程序连接多个redis实例做缓存
1.redis配置: $CONFIG_REDIS = array( array('host' => '192.168.19.29', 'port' => '6379', 'dbIn ...
- Flask之视图(二)
2.2 扩展 上下文:相当于一个容器,保存了Flask程序运行过程中的一些信息. Flask中有两种上下文,请求上下文和应用上下文. 请求上下文(request context) request和se ...
- mysql 里的 ibdata1 文件不断的增长?
我们在 Percona 支持栏目经常收到关于 MySQL 的 ibdata1 文件的这个问题.当监控服务器发送一个关于 MySQL 服务器存储的报警时,恐慌就开始了 —— 就是说磁盘快要满了.一番调查 ...
- 关于服务器raid的一个记录
今天下午,在装操作系统的时候,特意的测试了下raid1的性能. 1. 开启操作系统 直接正常开启操作系统,操作系统的硬盘做的是raid1,从而数据写俩份,从而在损坏一张盘之后,另外一张盘并不会收到影响 ...
- 03-23 MVC框架(以查询、删除为例)
1.MVC的定义: MVC(Model-View-Controller,模型-视图-控制器)是用于将应用程序粉好吃呢过如下3个主要方面的体系结构模式: 模型(Model):一组类和业务规则,类用于描述 ...
- C# using语句的使用
使用时注意事项 ①using只能用于实现了IDisposable接口的类型,禁止为不支持IDisposable接口的类型使用using语句,否则会出现编译错误:②using语句适用于清理单个非托管资源 ...