SQL优化

xiaoxiao2021-02-28  102

由于最近准备跳槽换个单位,前天面试时碰到一份这样的SQL笔试题, 小弟才疏学浅当时没有答好,不过还是学习了,得感谢这个公司啊;建表语句如下;

我挑了几个有意思的题 贴出来;

优化以下SQL语句, 说出你的思路 1. SELECT * FROM customer WHERE substring(custname,1,4)='chas' 1).应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描; 2).字段是否可以考虑拆分; 3).修改为 SELECT * FROM customer WHERE custname like'chas%' 2. SELECT * FROM customer WHERE money /30 < 1000 计算放到后面即可; 3. SELECT * FROM customer WHERE custname=3721 用具体的字段列表代替“*”,不要返回用不到的任何字段,标示出返回字段要比 * 的效率高; 4. SELECT * FROM customer WHERE custname <> 'chas' 应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描; 如果是数字的话可以使用这种 : select * from staff_member where dept_no < 2001 Union all select * from staff_member where dept_no > 2001; 5. SELECT * FROM secoundinfo s WHERER s.custid NOT IN (SELECT c.custid FROM customer c) innot in 也要慎用,否则会导致全表扫描; not in 可以考虑用 not EXISTS

起码说明是公司用过心出的笔试题,考点大多是索引 和 联合索引,还有部分没贴出来,如果你有更好的优化方式欢迎探讨, 或者觉得我修改部分有不对的欢迎抛砖;

转载请注明原文地址: https://www.6miu.com/read-24469.html

最新回复(0)