主张以最少的人工成本
获得最大的外链发布提权效果!

SQL性能提升面试技巧,探讨高效SQL查询策略

SQL性能提升面试技巧,探讨高效SQL查询策略

  1. 对查询进行优化,应尽可能避免进行全面扫描,首要考虑在where及order by所涉及列上创建索引。

  2. 避免在where子句中对字段进行空值判断,应避免在where子句中使用!=或<>运算符,应避免在where子句中使用or来连接条件,因为这些查询会导致引擎放弃使用索引而进行全表扫描。

  3. 对于in和not in也应谨慎使用,否则可能会导致全表扫描。

  4. 在SELECT子句中避免使用‘*’:

  5. 尽量多使用COMMIT:只要有可能,在程序中尽量多使用COMMIT,这样程序的性能得到提升,需求也会因为COMMIT所释放的资源而减少,COMMIT所释放的资源包括:

a. 回滚段上用于恢复数据的信息。

b. 被程序语句获得的锁。

c. redo log buffer中的空间。

d. Oracle为管理上述3种资源而进行的内部开销。

  1. 通过内置函数提升SQL效率

  2. 避免在where子句中使用参数,对字段进行表达式操作,对字段进行函数操作,“=”左边进行函数、算术运算或其他表达式运算,因为这些操作会导致引擎放弃使用索引而进行全表扫描。

  3. 尽量避免使用游标

  4. 删除重复记录

SQL数据库查询的优化

  1. 使用合理的表结构,尽量减少表关联,有时宁愿多占用一些空间,存储一些在其他表中重复的字段。

  2. 合理使用索引。

  3. 使用存储过程。

  4. 注意SQL语句的书写。针对“自下而上”解析的数据库系统,将关键性语句条件(如主键、索引、确定的值等)放置在后面。反之,放置在前面。例如,在SQLSERVER数据库中,你应该将首先去除大部分记录的条件放置在where的前面部分。

举例:

假设主键为key;创建日期为c_date,你的条件中包含对key和c_date的范围查询,那么你应当写成:

where
key >= from_key and key <= to_key and
c_date >= from_date and c_date <= to_date

而不应该写成:

where
key and c_date >= from_date and c_date <= to_date and

= from_key and key <= to_key

它们的速度是不一样的。

以上几点都将提高查询速度!

第二次回答:

有人对第三条“使用存储过程”提高效率有异议,那么请问,你认为存储过程除了可以完成复杂的判断和较复杂的运算、集中控制之外的主要作用是什么?

在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可以极大地提升SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。

任何一个设计良好的数据库应用程序都应当尽可能地使用存储过程。

我提到的以上几点,是针对入门者而言,也是比较容易做到的,对于要深入研究这个问题的,那么这些远远不够,但是,做好这些,可以将速度提高一大截了。

以上所转载内容均来自于网络,不为其真实性负责,只为传播网络信息为目的,非商业用途,如有异议请及时联系btr2020@163.com,本人将予以删除。夫唯发布外链网 » SQL性能提升面试技巧,探讨高效SQL查询策略

分享到: 生成海报