当前位置: 首页 > 编程笔记 >

SQL命令优化需要记住的9点事项

欧旻
2023-03-14
本文向大家介绍SQL命令优化需要记住的9点事项,包括了SQL命令优化需要记住的9点事项的使用技巧和注意事项,需要的朋友参考一下

与数据库交互的基本语言是sql,数据库每次解析和执行sql语句多需要执行很多步骤。以sql server为例,当数据库收到一条查询语句时,语法分析器会扫描sql语句并将其分成逻辑单元(如关键词、表达式、运算符和标识符)并生成查询树,最后查询优化器将分析所有可以访问数据库的源表的方法,从中选择一组返回结果集最快且消耗资源较少的步骤。查询树随即进行更新以准确记录这个步骤,接着交由数据库引擎开始执行,然后将查询结果返回给用户。可见数据库引擎每次执行sql命令都会有很大的开销,如果提交的sql质量不高甚至有逻辑错误就会造成无谓的开销和时间浪费。为了避免这种情况,在使用sql命令时应注意以下原则:

   1、字段提取要按照“需多少、提多少”的原则,避免“select *”,尽量使用“select 字段1,字段2,字段3 ...”。实践证明,每少提取一个字段,数据库提取速度就会有相应的提升。提升的速度还要由你舍弃的字段大小来决定。

   2、尽量使用exists代替select count(*) 来判断是否存在记录。优化器优化exists谓词时支持短路功能。只要找到一行,不需要再扫描其他行就可以确定该表是否包涵行了。count函数只有在统计表中所有行的行数时使用。

   3、尽量使用(not) exists代替(not) in 操作,in的sql性能总是比较低的。

  --语句

  select dname,deptno from dept where deptno not in(select deptno from emp where dept.deptno=emo.deptno)

  --语句

  select dname,deptno from dept where not exists(select deptno from emp where dept.deptno=emo.deptno)

   4、尽量使用not in,可以用left outer join代替它。

   5、尽量不要使用or,使用or会引起全表扫描,将大大降低查询效率

   6、注意where子句的写法,必须考虑语句顺序,应该根据索引顺序、范围大小来确定条件子句的前后顺序,尽可能地让字段顺序与索引顺序一致,范围从大到小。

   7、尽量使用“>=“,不用使用”>“

   8、在编写sql语句之前了解表的索引结构。有效地利用索引能够避免不必要的全表扫描,缩短查询时间。应该避免在where子句中使用is null、<>、!=、not、 not exist、not in、not like等命令,他们通常会引起全表扫描导致索引无效。

   9、在where 子句中,任何对列的操作(函数、计算等)讲导致索引失效,这些操作应该尽可能地移至等号右边,如where substring(id,1,1)=‘a‘,应该写成where id like 'a%‘;where result*10> 30应该写成where result >30;

对sql命令进行优化的基本原则是尽量减少类型转换和计算,充分利用表索引,减少全表扫描的次数。

 类似资料:
  • 问题内容: 我当前的查询如下所示: 语义: 有两个输入值: 第4行:点数组 第12行:双精度数字: 第一段(第1-6行): 从点数组创建表以用于… 第二段(第8-14行): 对于表中的每个点:从表中获取一个随机(!)点,其距离< 将那些元组保存在表中 第三段(第16-19行): 对于表中的每个值:获取所有值并… 如果值不是唯一的:则选择一个随机值 输出:,,,(从输入值) 表格示例: 结果示例:

  • SQL有以下优点: 快速 - 使用SQL查询,用户可以快速有效地从数据库中检索大量记录。 无需编码 - 在标准SQL中,管理数据库系统非常容易。它不需要大量代码来管理数据库系统。 明确界定标准 - ISO和ANSI是长期建立使用的SQL数据库标准。 可移植性 - SQL可用于笔记本电脑,PC,服务器甚至某些手机。 互动语言 - SQL是用于与数据库通信的域语言。 它还用于在几秒钟内接收复杂问题的答

  • 优化体验 视频直播App播放器优化

  • null null 这里,我试图给提供边距,但它不起作用...我使用的定位有效,但margin-top不起作用。请告诉我为什么中的margin-top属性不起作用。这是我在stackoverflow中的第一个问题,如果问题问错了,请原谅。:)

  • 问题内容: 我创建了一个眼镜蛇命令并添加了一个标志: 除了自己检查值并返回错误之外,是否有其他方法可以使它成为必需项? 问题答案: 几个月前,该行为已在中进行了更改,尽管对此文档尚不十分清楚。现在,如果您将标记标记为,而没有提供此类标记,则运行命令将显示帮助加 最后指出缺少的必需标志。

  • 主要内容:1. 数据定义语言(DDL),2.数据操作语言,3. 数据控制语言,4. 事务控制语言,5. 数据查询语言SQL命令是指令,它用于与数据库通信交互。 它还用于执行特定任务,功能和数据查询。 SQL可以执行各种任务,如创建表,向表中添加数据,删除表,修改表,为用户设置权限等。 SQL命令的类型,如下图所示 : 1. 数据定义语言(DDL) DDL更改表的结构,如创建表,删除表,更改表等。 DDL的所有命令都是自动提交的,这意味着它会永久保存数据库中的所有更改。 以下是DDL下的一些命令: