SQL语句优化系列一

SQL语句优化

1.SELECT 子句中避免使用‘* ’

2.使用表的别名 (Alias)

当在 SQL 语句中连接多个表时 , 请使用表的别名并把别名前缀于每个 Column 上。这样一来,就可以减少解析的时间并减少那些由 Column 歧义引起的语法错误。

3.用 >= 替代 >

高效 : SELECT * FROM  EMP  WHERE  DEPTNO >=4

低效 : SELECT * FROM EMP WHERE DEPTNO >3 两者的区别在于,前者 DBMS 将直接跳到第一个 DEPT 等于 4 的记录而后者将首先定位到 DEPTNO=3 的记录并且向前扫描到第一个 DEPT 大于 3 的记录。

4.优化 GROUP BY: 提高 GROUP BY 语句的效率 , 可以通过将不需要的记录在 GROUP BY 之前过滤掉。下面两个查询返回相同结果但第二个明显就快了许多。

低效 : SELECT JOB , AVG(SAL) FROM EMP GROUP JOB HAVING JOB = ‘PRESIDENT‘ OR JOB = ‘MANAGER‘

高效 : SELECT JOB , AVG(SAL) FROM EMP WHERE JOB = ‘PRESIDENT‘ OR JOB = ‘MANAGER‘ GROUP JOB

备注:避免使用HAVING子句,HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作。如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销。

时间: 2024-07-29 15:23:20

SQL语句优化系列一的相关文章

SQL语句优化系列三(关于select查询)

关于select查询 输出表中的所有列   select  *  from 表名 输出表中的部分列   select  字段名表 from 表名 为结果集内的列指定列名  select  {字段名1 [ as 列的别名]  [,-n]}  from 表名 消除取值重复的行,在select 后面紧跟 distinct 限制返回的行数    select  top 行数 列名表 from 表名 查询满足条件的元组  select  *  from 表名 where 查询条件 比较:列表达式1 比较运

SQL语句优化系列四(Oracle数据库日期格式转换)

Oracle数据库日期格式转换 select sysdate from dual select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') as mydate from dual select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as mydate from dual select to_number(to_char(sysdate,'yyyymmddhh24miss')) as mydate from dual

SQL系列 - SQL语句优化个人总结

关于SQL语句优化方法 有些是通用的(如避免Select *): 有些不同的数据库管理系统有所区别(如Where子句顺序): 然后必须根据实际环境进行调优,因为即使是相同的数据库和表,在数据量或其他环境变化之后,SQL效率可能是不同的.所以,优化不是一蹴而就的. 一些总结 下面是我在工作中,主要是Oracle环境下一些常用的SQL语句优化方法,仅供参考.当然,后续可以再深入研究下SQL执行计划.索引等. 指明需要的列 Selcet中每少提取一个字段,数据的提取速度就会有相应的提升.提升的速度还要

Oracle SQL性能优化系列

1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖. 为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行an

SQL语句优化技术分析

摘自  http://www.cnblogs.com/wxj1020/archive/2008/04/27/1173638.html 最近几周一直在进行数据库培训,老师精湛的技术和生动的讲解使我受益匪浅.为了让更多的新手受益,我抽空把SQL语句优化部分进行了整理,希望大家一起进步. 一.操作符优化 1.IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格.但是用IN的SQL性能总是比较低的,从Oracle执行的步骤来分析用IN的SQL与不用IN的SQL有以

Mysql性能优化----SQL语句优化、索引优化、数据库结构优化、系统配置优化、服务器硬件优化

一.SQL语句优化 1-1.MySQL慢日志 1).慢日志开启方式和存储格式 如何发现有问题的SQL? 使用Mysql慢日志对有效率问题的SQL进行监控 前期准备 mysql> show variables like '%log_queri%'; +-------------------------------+-------+ | Variable_name | Value | +-------------------------------+-------+ | log_queries_no

MySQL之SQL语句优化

一 SQL语句优化的一般步骤: 1 通过show status命令了解各种SQL语句的执行频率 mysql> show status;                #show status:显示服务器状态信息 +-----------------------------------------------+-------------+ | Variable_name                                 | Value       | +---------------

小贝_mysql sql语句优化过程

sql语句优化 一.SQL优化的一般步骤 (1).通过show status命令了解各种SQL的执行频率. (2).定位执行效率较低的SQL语句-(重点select) (3).通过explain分析低效率的SQL语句的执行情况 (4).确定问题并采取相应的优化措施 (1) 通过showstatus命令了解各种SQL的执行频率 MySQL客户端连接成功后,通过使用show[session|global] status 命令可以提供服务器状态信息.其中的session来表示当前的连接的统计结果,gl

Oracle SQL语句优化34条

非常好用的SQL语句优化34条 1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基 础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WHERE子句中的连接顺序.: ORACL