SQL 优化
来源:互联网 发布:linux android 模拟器 编辑:程序博客网 时间:2024/04/26 01:55
SQL 优化
1、一般的sql优化技巧* 避免使用“*”替代所有列 --清晰列,避免Oracle分析 *
一条SQL的执行分3步: 语法分析与编译、执行、存取数据。
* TRUNCATE 代替 DELETE。
* 在确保完整性的情况下,多用COMMIT语句。
* 尽量减少表的查询次数。
SQL>select tname from teacher
where tid = (select tid from student wheresname=’杨小七’); --两次查询表
SQL>select tname from teachert
full jion student s ont.tid=s.tid
wheres.sname=’杨小七’; --一次查询。
* EXISTS替代IN。
* WHERE 替代 HAVING。
* 用“<=”替代“<”。
1.2 表连接
* 选择 FROM表的顺序。---解析表时,从右到左,最后一个表为驱动表,选记录最少的作驱动表
* WHERE 子句的连接顺序。--自下而上解析,能过滤掉大数据量的放在末尾。
* 使用表的别名。 --减少Oracle解析。
1.3 有效使用索引
* 使用索引的基本事项。
使用索引的确快,但是索引要占据存储空间,需要进行定期维护,每当表中有记录增减或索引列被修改时,索引本身也会被修改。这就意味着:每条记录的INSERT、DELETE、UPDATE操作都要使用更多的磁盘I/O。
而且很多应经不必要的索引,甚至会影响查询效率。
* 避免对索引列使用 NOT。
* 避免对 唯一索引列 使用 IS (NOT) NULL。
* .选择 复合索引 主列。
@ 选择经常在 WHERE 子句中使用且由 AND 操作符连接的列作为复合索引列。
@ 选择 WHERE 子句中使用频率相对较高的列 作为复合索引的主列。
例如,如果 orgId列 的使用频率 比 deptId 高,那么创建索引时 orgId应该在前
* .监视索引是否被使用。
因为不必要的索引会起负作用。
--添加监视
system@SDROLUN>alter indexidx_ename monitoring usage;
索引已更改。
--通过 V$OBJECT_USAGE 视图来了解该索引的使用状态。
system@SDROLUN>selecttable_name, index_name, monitoring from v$object_usage;
TABLE_NAME INDEX_NAME MON
------------------------------ ---------------------------------
EMPLOYEE IDX_ENAME YES* .。
* .。
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- sql优化
- sql优化
- Sql优化
- sql优化
- sql优化
- SQL 优化
- sql优化
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- 消息: 'null' 为空或不是对象
- java中并发工具包(上)
- wordpress不加载Google fonts的几种办法
- 阻塞、非阻塞、异步、同步以及select/poll和epoll
- Ubuntu12.04 -- 系统使用问题综合记录
- SQL 优化
- Delphi写dll文件
- [LeetCode]Convert Sorted Array to Binary Search Tree
- 中心椭圆算法画图C++
- error TRK0005: Failed to locate: "CL.exe".
- OpenCV在图像上抠取指定区域平移、缩放的图像
- c++循环控制语句
- Oracle sqlplus中常用的set命令
- jstack jstat jmap