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优化笔记,自己无聊的时候整理的一些优化笔记
1.FORALL 用法小结 2.如何使用批挷定提高性能 3.FORALL 如何影响回滚 4.用%BULK_ROWCOUNT 属性计算FORALL迭代影响行数 ,用%BULK_ROWCOUNT 属性计算FORALL...8.SQL优化学习笔记 9.给Oracle存储过程传入数组(这是自己的)
sql优化视频 学习sql优化必备 适合初中级开发人员 包括笔记 视频 脚本
数据库优化第一节的笔记,有需要后续sql优化的请留言回
SQL SERVER 2008 学习笔记:日常维护、深入管理、性能优化。
Microsoft.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part2.rar; 中文版; 第二部分(共两部分)
精炼SQL2005的难解知识点,另附加查询优化
复合索引、聚族因子、视图优化、nested loops优化、分页优化、执行计划
SQL.SERVER.2008学习笔记:日常维护、深入管理、性能优化]
MS.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part1.rar; SQLServer; 2008; 维护; 管理; 优化; 第一部分(共两部分)
俺的笔记,呵呵O(∩_∩)O~SQL开发指南 第16章 SQL Tuning优化调优技巧--felix笔记.pdf
SQL SERVER 2008 学习笔记:日常维护、深入管理、性能优化。
sql语句方面;pl/sql 编程方面;系统函数和系统包使用方面;DBA管理;oracle工具使用方面;oracle优化方面;其他
包含内容:MySQL入门到精通经典教程;MySQL优化讲义;MySQL优化笔记;SQL优化思路;索引学习;MySQL服务器调优思路;
MS.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part2.rar; SQLServer; 2008; 维护; 管理; 优化; 第二部分(共两部分)
学习相关最实用的关于C#通用权限文档,Sql,UML方面的资料,绝对物超所值
三篇关于SQL语句如何优化的文档,都是实践笔记,很有用
Microsoft SQL Server 2005技术内幕(一): 查询、调整和优化 及 存储引擎
一个学习mysql的笔记,适合新手使用,以及对数据库的优化可以参考。