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之间的替换
分享到:
相关推荐
### SQL Server 优化知识点 #### 一、SQL性能优化技巧 **1.1 查询的模糊匹配** - **问题描述**:使用 `LIKE '%parm1%'` 的查询方式会导致索引失效,降低查询效率。 - **解决方案**: - **前端改进**:改变用户...
在Oracle数据库管理中,SQL优化是一项至关重要的任务,它直接影响到数据库系统的运行效率和..."Oracle SQL优化笔记.doc"很可能是对此类知识的详细整理和实例分析,对于理解和实践Oracle数据库优化具有很高的参考价值。
此外,笔记还涵盖了存储过程中的参数传递,特别是传入数组的方法,以及SQL优化的一些关键点。 1. **FORALL 用法**: FORALL语句是一种在PL/SQL中批量处理数据的方式,它可以避免为集合中的每个元素单独执行SQL语句...
以下是一份详细的MySQL优化笔记,涵盖了多个方面: 一、查询优化 1. 使用索引:为经常用于搜索的列创建索引可以显著加快查询速度。B树和哈希索引是最常见的类型,适用于不同的查询场景。 2. 避免全表扫描:尽量使用...
sql优化视频 学习sql优化必备 适合初中级开发人员 包括笔记 视频 脚本
《SQL2005学习笔记》是一份深入探讨SQL Server 2005核心概念、功能及优化策略的宝贵资料。SQL Server 2005是微软推出的一款强大的关系型数据库管理系统,它在数据存储、处理和分析方面具有广泛的应用。这份笔记旨在...
《SQL Server精华 (CHM)_sqlserver_SQLServer笔记_》是一部综合性的SQL Server学习资源,旨在帮助用户深入理解和掌握Microsoft SQL Server数据库管理系统的核心概念、功能和最佳实践。这部笔记涵盖了一系列关键知识...
三、SQL优化 1. 索引:提高查询速度的关键,理解B树和哈希索引的工作原理,以及如何创建和管理索引。 2. 查询优化:避免全表扫描,合理使用WHERE子句和索引,减少子查询和关联操作。 3. 分区表:对大数据量表进行...
这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...
SQL SERVER 2008 学习笔记:日常维护、深入管理、性能优化。
10. **数据库性能优化**:如索引策略、查询优化器的工作原理,以及如何编写高效的SQL语句。 在VC++中,我们还需要了解如何处理结果集,如创建`CRecordset`对象来遍历和操作查询结果。此外,笔记可能还会讨论如何...
标题“20170909学习sql笔记”表明这是一个关于SQL学习的资料,可能包含了一天的学习记录或者一个教程的集合。SQL,全称Structured Query Language,是用于管理和处理关系数据库的标准语言。这个标题暗示我们将探讨...
SQL语言基础学习笔记 SQL,全称为“结构化查询语言”(Structured Query Language),是数据库管理系统的核心语言,用于管理和操作关系型数据库。SQL的特点包括: 1. **大小写不敏感**:SQL语句在实际执行时,对大...
这份“SQL学习笔记+记录sql各种应用”涵盖了SQL的基础概念、语法以及在实际工作中的多种应用。 一、SQL基础 1. 数据库与表:SQL中的数据库是由一个或多个表组成的集合,表由行和列构成,每一行代表一条记录,每一列...
综上所述,这份“C#,UML,sql学习笔记”涵盖了C#编程中的核心概念,如权限管理、多线程,以及数据库管理和设计的高级技巧SQL优化,还包括了软件工程中重要的设计和规划工具UML。学习这些内容不仅可以提升个人的技术...
Microsoft.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part2.rar; 中文版; 第二部分(共两部分)
### T-SQL课堂笔记知识点详解 #### 创建架构与表结构 在T-SQL中,首先创建了一个名为`S_T`的架构,这是SQL Server数据库中用于组织对象如表、存储过程等的一种方式。随后,创建了三个表:`Student`、`Course`以及`...
SQL Server是微软公司推出的一款关系型数据库管理系统,广泛应用于企业级数据存储、管理和分析。它提供了强大的数据处理能力,支持事务处理、数据仓库、数据挖掘等多种功能,是IT行业中不可或缺的工具之一。以下是对...
描述中提到的"有我自己的一些SQL Server笔记,可自己写笔记"意味着这个压缩包可能包含了个人对SQL Server数据库管理系统的理解、实践经验以及一个可以用来创建和编辑笔记的平台。 首先,让我们从C#开始。C#是一种由...
在维护和优化SQL Server 2008时,我们需要注意以下几个关键知识点: 1. **RAID配置**: - RAID10:提供高读写速度和数据冗余,但磁盘利用率相对较低,适合存放对性能要求极高的日志文件。 - RAID5:适用于读取...