刚整理的SQL常见替代点

1、能用DISTINCT的就不用GROUP BY

SELECT OrderID FROM Details WHERE UnitPrice > 10 GROUP BY OrderID

可改为:  SELECT DISTINCT OrderID FROM Details WHERE UnitPrice > 10

2.能用UNION ALL就不要用UNION

UNION ALL不执行SELECT DISTINCT函数,这样就会减少很多不必要的资源

3.尽量不要用SELECT INTO语句。

SELECT INOT 语句会导致表锁定,阻止其他用户访问该表。

4.能够用BETWEEN的就不要用IN

5.exists代替in

select num from a where num in(select num from b)

可改为:  select num from a where exists(select 1 from b where num=a.num)

6.避免在 where 子句中对字段进行表达式操作(计算、Format等等),这将导致引擎放弃使用索引而进行全表扫描。

如:  SELECT * FROM T1 WHERE F1/2=100

应改为:  SELECT * FROM T1 WHERE F1=100*2

SELECT * FROM RECORD WHERE SUBSTRING(CARD_NO,1,4)=?5378?

应改为:  SELECT * FROM RECORD WHERE CARD_NO LIKE ?5378%?

SELECT member_number, first_name, last_name FROM members WHERE DATEDIFF(yy,datofbirth,GETDATE()) > 21

应改为:  SELECT member_number, first_name, last_name FROM members WHERE dateofbirth < DATEADD(yy,-21,GETDATE())

即:任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。

7.表中是否存在某条纪录不要用count(*)那样效率很低,而且浪费服务器资源。可以用EXISTS代替。

如:  IF (SELECT COUNT(*) FROM table_name WHERE column_name = ?xxx?)

可以写成:  IF EXISTS (SELECT * FROM table_name WHERE column_name = ?xxx?)

刚整理的SQL常见替代点,布布扣,bubuko.com

时间: 2024-12-19 22:24:14

刚整理的SQL常见替代点的相关文章

SQL常见的可优化点

此文章系在SQL代码文件中写的... # ########################################### # 索引相关 # ########################################### – 查询(或更新,删除,可以转换为查询)没有用到索引 这是最基础的步骤,需要对sql执行explain查看执行计划中是否用到了索引,需要重点关注type=ALL, key=NULL的字段. – 在索引字段上施加函数 to_char(gmt_created, ‘mm

辛星整理postgresql中常见的一些非sql操作

这里所说的操作,是在我们用psql进入postgresql的客户端之后进行的操作,它们并不是SQL语句,但是它们通常又很重要,下面是一些常见的整理操作: (1)列出所有的数据库,我们使用\l命令或者\list命令,注意这里是字母l,不是数字1. (2)切换数据库,我们实用\c  数据库名的方式,它相当于MySQL里面的use  数据库名. (3)列出当前数据库下的所有表,我们使用\d命令,它相当于MySQL中的show tables命令. (4)退出当前用户我们使用\q命令,它相当于MySQL中

整理的sql sever一些数据库查询面试题

当然,我整理的只是一些常见的面试题,具体数据库就不给了,相信大家能看懂!!! --2列出EMPLOYEES表中各部门的部门号,最高工资,最低工资 select Max(salary) as '最高工资',Min(salary) as '最低工资' ,department_id as '部门号' from Employees group by department_id --3列出EMPLOYEES表中各部门EMPLOYEE_JOB为'职员'的员工的最低工资,最高工资 select Max(sal

SQL Fundamentals:替代变量(&amp;,&amp;&amp;)以及DEFINE,UNDEFINE,ACCEPT指令

替代变量 利用替代变量可以实现数据操作的交互性.替代变量的操作类似于键盘输入操作. 所谓的替代变量,指的就是在进行查询或更新操作时,某些数据是由用户所输入的,而这些数据前可以使用“&”标记. 替代变量的使用 1.使用“&”定义替代变量 在WHERE子句中使用替代变量 1.直接使用替代变量:&inputsal,这个时候系统会弹出一个框,让你输入替代变量的值 SELECT ename,job,sal,hiredate FROM emp WHERE sal>&inputsa

SQL常见的一些面试题(太有用啦)

SQL常见面试题 1.用一条SQL 语句 查询出每门课都大于80 分的学生姓名 name   kecheng   fenshu张三    语文       81张三     数学       75李四     语文       76李四     数学       90王五     语文       81王五     数学       100王五     英语       90 A: select distinct name from table where name not in (select

.ETH后缀勒索病毒信息整理及SQL数据库恢复

研究人员(公众号:网安众安)检测到一种使用.ETH文件扩展名的新勒索病毒,通过对.ETH后缀勒索病毒的整理,目前发现,涉及到的勒索信息后缀如下:[MailPayment@decoder.com].ETH [helpfilerestore@india.com].ETH [decryptmyfiles@qq.com].ETH [decryptprof@qq.com].ETH [1701222381@qq.com].ETH [btccrypthelp@cock.li].ETH(注:由于整理的局限性,不

SQL常见错误总结

目录 语法错误 标点错漏 重命名 数据拼接 null值 逻辑顺序 函数错误 参数的数量 参数的格式 逻辑错误 数据重复 无效筛选 标签重叠 时间错位 SQL是数据分析中最高频的操作之一,本文梳理常见的SQL错误,可以归为三大类: 语法类: 函数类: 逻辑类: 语法错误 标点错漏 e.g. 逗号多或缺,引号.括号等不成对,多余的空格等: e.g. case when - end函数,有时候少写end e.g. select含有 聚合函数(count, sum, avg)时,相应字段都要放入grou

生死看淡,不服就干。SQL常见的一些优化。

? 我们要做到不但会写SQL,还要做到写出性能优良的SQL语句. 索引问题 经常发现有很多后台程序的性能问题是因为缺少何时索引造成的,有的表甚至没有索引.这种情况往往是因为在设计表时,没有定义索引,而开发初期,由于表中的数据不多,所以感觉不到索引对性能的影响,但是一旦项目发布,表中数据多了之后,缺少索引对性能的影响便会越来越大. 还有不要在建立索引的数据列上进行一下操作: 避免对索引字段进行计算操作: 避免在索引字段上使用not.<>.!=: 避免在索引字段单使用 IS NULL.IS NOT

精心收集整理的SQL Server 2014/2012/2008/2005/2000简体中文企业版下载地址

经常在网上看到有同学费尽心思的找SQL server数据库各版本的下载地址,看到别人的求助贴就不自觉的想去帮助他们,但是一个一个去帮助又不太现实,毕竟个人精力有限,既然大家有需求,那么笔者就本着乐于分享和奉献的精神帮大家收集齐SQL server简体中文企业版的所有版本(SQL2014/2012/2008/2005/2000),为什么只提供企业版下载呢?因为不管你是学生还是工作研究人员,企业版都是功能最为齐全的一个版本,比如企业版都集成了SQL Server Management Studio管