基本的语言与数据库交互,SQL和数据库需要很多步骤来解析和执行SQL语句的时间。以SQL Server为例,当数据库接收到查询分析器将扫描的SQL语句,分为逻辑单元(如关键字、标识符、运算符表达式)和一个查询树,查询优化器将对源表的数据库访问方法,选择一组返回结果集的最快步伐消耗更少的资源。查询树然后更新,准确记录了这一步,其次是数据库引擎,然后将查询结果返回用户。可以看出,每一次的数据库引擎执行sql逗号第二,会有很多费用。如果提交SQL的质量不高,甚至逻辑错误会发生,则会造成不必要的时间和费用的浪费:

1,字段抽取应基于避免选择*的数量和数量,使用选择字段1,字段2,字段3……已经证明,如果一个字段提取较少,则将提高数据库的提取速度。

2、尽量使用存在而不是select count(*)来确定是否有记录。优化器支持短路功能优化时存在谓词。只要找到一个线,没有其他线路需要扫描,可以确定表是否覆盖或不。伯爵功能只能使用在统计表中所有行的行数。

3,尝试使用(不是)存在,而不是(不)在操作中,而sql中的SQL性能总是很低。


-声明

选择的部门名称,部门不在deptno(SELECT DEPTNO从)

-声明

选择部门名称,部门的部门不存在(选择上从EMP)




4,尽可能不要使用,并用左外连接替换它。

5。不要使用或尽可能多地使用。使用或将导致全表扫描,这将大大降低查询效率。

6,注意写从句的方法。我们必须考虑句子的顺序。我们应该根据索引的顺序和程度来确定条件从句的顺序,并尽可能保持字段的顺序和索引的顺序。

7,尽量不使用> >。

8、在编写SQL语句理解表的索引结构,索引的有效使用可以避免不必要的全表扫描,缩短了查询时间,应避免使用,空的WHERE子句中的= =,不,不存在,不在,不喜欢,和其他的命令,他们通常会导致全表扫描会导致索引无效。

9、在WHERE子句中,任何操作(计算功能,等)将导致索引失效,这些操作应该平等的权利,如在(子串的ID,1, 1)= ' ',' ' %像应该是身份;在结果* 10 > 30在结果> 30;

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