`
alex_gao
  • 浏览: 81020 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL优化笔记

 
阅读更多

1.使用确定的字段替代*:

   使用

  SELECT id, first_name, last_name, age, subject FROM student_details;

    替代

    SELECT * FROM student_details;

 

2.having会在查询出结果后进行过滤,可以理解为一个过滤器,所以不要将having作为其他用途(除过滤器):

   使用

   SELECT subject, count(subject) 

  FROM student_details 
  WHERE subject != 'Science' 
  AND subject != 'Maths' 
  GROUP BY subject;

    替代

    SELECT subject, count(subject) 

   FROM student_details 
   GROUP BY subject 
   HAVING subject!= 'Vancouver' AND subject!= 'Toronto';

 

3.减少子查询的数量:

   使用

   SELECT name 

  FROM employee 
  WHERE (salary, age ) = (SELECT MAX (salary), MAX (age) 
  FROM employee_details) 
  AND dept = 'Electronics'; 

    替代

    SELECT name 

   FROM employee
   WHERE salary = (SELECT MAX(salary) FROM employee_details) 
   AND age = (SELECT MAX(age) FROM employee_details) 
   AND emp_dept = 'Electronics';

 

4.合理的使用in、exists、join:

   1)in一般情况下性能最差;

   2)当大部分的查询过滤条件在子查询中,in查询比较有效;

   3)当大部分的查询条件在主查询中,exists有较好的性能;

   使用

   Select * from product p 

  where EXISTS (select * from order_items o 
  where o.product_id = p.product_id)

   替代

    Select * from product p 

  where product_id IN 
  (select product_id from order_items

 

5.当关联表之间存在一对多关系时,可以使用exists替代distinct:

   使用

   SELECT d.dept_id, d.dept 

  FROM dept d 
  WHERE EXISTS ( SELECT 'X' FROM employee e WHERE e.dept = d.dept);

   替代

   SELECT DISTINCT d.dept_id, d.dept 

  FROM dept d,employee e 
  WHERE e.dept = e.dept;

6.使用union all 替代 union:

   使用

   SELECT id, first_name 

  FROM student_details_class10 
  UNION ALL 
  SELECT id, first_name 
  FROM sports_team;

    替代

    SELECT id, first_name, subject 

  FROM student_details_class10 
  UNION 
  SELECT id, first_name 
  FROM sports_team;

7.注意where条件语句的选择

   1)避免反相匹配符的选择,如!=、not in等;

   2)尽量不要使用全模糊,即'%condition%';

 

8.使用exists替代count判断记录是否存在。

 

9.使用%替代substr

 

10.注意union和or之间的替换

 

 

分享到:
评论

相关推荐

    sqlserver优化笔记

    ### SQL Server 优化知识点 #### 一、SQL性能优化技巧 **1.1 查询的模糊匹配** - **问题描述**:使用 `LIKE '%parm1%'` 的查询方式会导致索引失效,降低查询效率。 - **解决方案**: - **前端改进**:改变用户...

    oracle 优化笔记

    在Oracle数据库管理中,SQL优化是一项至关重要的任务,它直接影响到数据库系统的运行效率和..."Oracle SQL优化笔记.doc"很可能是对此类知识的详细整理和实例分析,对于理解和实践Oracle数据库优化具有很高的参考价值。

    JAVA 与 Sql学习笔记

    此外,笔记还涵盖了存储过程中的参数传递,特别是传入数组的方法,以及SQL优化的一些关键点。 1. **FORALL 用法**: FORALL语句是一种在PL/SQL中批量处理数据的方式,它可以避免为集合中的每个元素单独执行SQL语句...

    mysql优化笔记+资料

    以下是一份详细的MySQL优化笔记,涵盖了多个方面: 一、查询优化 1. 使用索引:为经常用于搜索的列创建索引可以显著加快查询速度。B树和哈希索引是最常见的类型,适用于不同的查询场景。 2. 避免全表扫描:尽量使用...

    sql优化全套视频 sql优化必备 适合初中级开发人员

    sql优化视频 学习sql优化必备 适合初中级开发人员 包括笔记 视频 脚本

    SQL2005学习笔记

    《SQL2005学习笔记》是一份深入探讨SQL Server 2005核心概念、功能及优化策略的宝贵资料。SQL Server 2005是微软推出的一款强大的关系型数据库管理系统,它在数据存储、处理和分析方面具有广泛的应用。这份笔记旨在...

    SQL Server精华 (CHM)_sqlserver_SQLServer笔记_

    《SQL Server精华 (CHM)_sqlserver_SQLServer笔记_》是一部综合性的SQL Server学习资源,旨在帮助用户深入理解和掌握Microsoft SQL Server数据库管理系统的核心概念、功能和最佳实践。这部笔记涵盖了一系列关键知识...

    高效SQL学习笔记

    三、SQL优化 1. 索引:提高查询速度的关键,理解B树和哈希索引的工作原理,以及如何创建和管理索引。 2. 查询优化:避免全表扫描,合理使用WHERE子句和索引,减少子查询和关联操作。 3. 分区表:对大数据量表进行...

    oracle_sql笔记

    这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...

    SQL SERVER 2008 学习笔记:日常维护、深入管理、性能优化.part1/2

    SQL SERVER 2008 学习笔记:日常维护、深入管理、性能优化。

    VC++ SQL 学习笔记

    10. **数据库性能优化**:如索引策略、查询优化器的工作原理,以及如何编写高效的SQL语句。 在VC++中,我们还需要了解如何处理结果集,如创建`CRecordset`对象来遍历和操作查询结果。此外,笔记可能还会讨论如何...

    20170909学习sql笔记

    标题“20170909学习sql笔记”表明这是一个关于SQL学习的资料,可能包含了一天的学习记录或者一个教程的集合。SQL,全称Structured Query Language,是用于管理和处理关系数据库的标准语言。这个标题暗示我们将探讨...

    SQL语言基础学习笔记

    SQL语言基础学习笔记 SQL,全称为“结构化查询语言”(Structured Query Language),是数据库管理系统的核心语言,用于管理和操作关系型数据库。SQL的特点包括: 1. **大小写不敏感**:SQL语句在实际执行时,对大...

    SQL学习笔记+记录sql各种应用

    这份“SQL学习笔记+记录sql各种应用”涵盖了SQL的基础概念、语法以及在实际工作中的多种应用。 一、SQL基础 1. 数据库与表:SQL中的数据库是由一个或多个表组成的集合,表由行和列构成,每一行代表一条记录,每一列...

    C#,UML ,sql学习笔记

    综上所述,这份“C#,UML,sql学习笔记”涵盖了C#编程中的核心概念,如权限管理、多线程,以及数据库管理和设计的高级技巧SQL优化,还包括了软件工程中重要的设计和规划工具UML。学习这些内容不仅可以提升个人的技术...

    Microsoft.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part2.rar

    Microsoft.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part2.rar; 中文版; 第二部分(共两部分)

    T-SQL课堂笔记

    ### T-SQL课堂笔记知识点详解 #### 创建架构与表结构 在T-SQL中,首先创建了一个名为`S_T`的架构,这是SQL Server数据库中用于组织对象如表、存储过程等的一种方式。随后,创建了三个表:`Student`、`Course`以及`...

    sql server笔记

    SQL Server是微软公司推出的一款关系型数据库管理系统,广泛应用于企业级数据存储、管理和分析。它提供了强大的数据处理能力,支持事务处理、数据仓库、数据挖掘等多种功能,是IT行业中不可或缺的工具之一。以下是对...

    c#,java,html,sqlsever记笔记软件

    描述中提到的"有我自己的一些SQL Server笔记,可自己写笔记"意味着这个压缩包可能包含了个人对SQL Server数据库管理系统的理解、实践经验以及一个可以用来创建和编辑笔记的平台。 首先,让我们从C#开始。C#是一种由...

    sql server 2008笔记

    在维护和优化SQL Server 2008时,我们需要注意以下几个关键知识点: 1. **RAID配置**: - RAID10:提供高读写速度和数据冗余,但磁盘利用率相对较低,适合存放对性能要求极高的日志文件。 - RAID5:适用于读取...

Global site tag (gtag.js) - Google Analytics