Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > sql语句优化的一些小技巧
【标  题】:sql语句优化的一些小技巧
【关键字】:sql
【来  源】:http://www.cublog.cn/u/479/showart.php?id=105809

sql语句优化的一些小技巧

Your Ad Here
发信人: leejw (身体是革命的本钱^_^), 信区: Database       
标  题: sql语句优化的一些小技巧
发信站: BBS 水木清华站 (Thu Dec 20 15:58:23 2001)

优化SQL的一些小常识。
1)不知大家是否喜欢使用‘NOT IN’这样的操作,如果是,那尽量使用(NOT) EXISTS 
替代
例子:
语句1
SELECT dname, deptno
FROM dept
WHERE deptno NOT IN
(SELECT deptno FROM emp);
语句2
SELECT dname, deptno
FROM dept
WHERE NOT EXISTS
(SELECT deptno
FROM emp
WHERE dept.deptno = emp.deptno);
明显的,2要比1的执行性能好很多
因为1中对emp进行了full table scan,这是很浪费时间的操作。而且1中没有用到emp的
index,
因为没有where子句。而2中的语句对emp进行的是range scan。

2)在海量查询时尽量少用格式转换。
如用
WHERE a.order_no = b.order_no
而不用
WHERE TO_NUMBER (substr(a.order_no, instr(b.order_no, '.') - 1)
= TO_NUMBER (substr(a.order_no, instr(b.order_no, '.') - 1)
 
3)查询海量数据是,可以使用optimizer hints,例如/*+ORDERED */

SELECT /*+ FULL(EMP) */ E.ENAME
FROM EMP E
WHERE E.JOB = 'CLERK';
而不是
SELECT E.ENAME
FROM EMP E
WHERE E.JOB || '' = 'CLERK';
用 TMD 文件修复损坏的 mysql 的数据库某个表:【上一篇】
itpub上的ORACLE之常用FAQ V1.0:【下一篇】
【相关文章】
  • 用 TMD 文件修复损坏的 mysql 的数据库某个表
  • 在mysql中加入查询日志
  • 如何把strsql的查询输出或者下载
  • 关于动态执行SQL Statement on ISeries
  • 新版MySQL的libstdc++.so.5出错的问题
  • SQL语法
  • MySQL性能优化全攻略-服务器参数调整
  • Heartbeat_2.0.3配置MySQL5.0.18为高可用集群(工作记录)
  • vBulletin <= 3.5.4 with MKPortal 1.1 Remote SQL
  • Confixx SQL Injection exploit (confixx_exploit.pl)
  • 【随机文章】
  • [转]几个国外域名解析网站
  • 传奇世界 35裁决升法
  • 中国互联网可能出现的转变.
  • rpm.livna.org FC的一些软件包
  • VBScrip 动态转换变量值为变量, 并赋值
  • 第十四章 简单数据库应用的创建及MASTAPP介绍(一)
  • 第4代白盒测试方法实践之“如何在VcTester集成自动构建功能”
  • Solaris系统安全加固列表
  • 精减xine
  • 极端编程的特点及讨论
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.