sql的优化原则
来源:互联网 发布:windos系统删除mac系统 编辑:程序博客网 时间:2024/05/17 10:43
1、查询所有时, *和列名,尽量用列名代替*
原因:
*代表所有的列名,oracle首先要判断*属于哪个表,而用列名,不需要判断,效率高
2、where解析的顺序: 右-> 左, and如果一个为假,所有都为假,把假的放在右边
where condition1 and condition2
where condition2 and condition1
如果是or,or一个为真则为真,把真的放在右边
where condition2 orcondition1
3、条件中没有组函数的情况下,尽量使用where,而不是having
原因:
where 先过滤在分组
having先分组在过滤
加入100条中就一条符合的,如果先分组要将100条分组,性能太差,用wehre直接过滤出1条然后在分组。
4、理论上:当子查询和多表查询功能一样的时候,尽量用多表查询
原因: 子查询实现,有两个from,操作了两次,而多表查询就一个from操作了一次,但是多表查询笛卡尔乘积列很多,所以说是理论上
子查询:
SQL> select *
2 from emp
3 where deptno=(select deptno from dept where dname='SALES');
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7900 JAMES CLERK 7698 03-12月-81 950 30
多查询:
SQL> select e.*
2 from emp e,dept d
3 where e.deptno=d.deptno and d.dname='SALES';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7900 JAMES CLERK 7698 03-12月-81 950 30
5、视图 是为了简化查询,不存数据,是虚表,数据存储在表中,但是效率低,如果希望存数据,可以使用物化视图。
6、 索引不一定能加快查询速度。
阅读全文
0 0
- sql优化的原则
- sql优化的原则
- SQL的优化原则
- sql的优化原则
- sql的优化原则
- SQL语句优化的原则:
- SQL语句优化的原则:
- SQL语句优化的原则
- thinkphp的sql优化原则
- 基于Oracle的Sql优化的原则
- Oracle中优化SQL的原则
- Oracle 中sql的优化原则(转载)
- Oracle中优化SQL的原则
- Oracle中优化SQL的原则
- 数据库SQL的优化原则解析
- 我的mysql数据库sql优化原则
- SQL优化:建索引的原则
- SQL优化原则
- 51nod 1101 换零钱
- 畅通工程再续
- Android Studio开发趟过的坑之aar的使用
- Oracle中常见的日期时间操作
- Passenger Comfort URAL
- sql的优化原则
- [LeetCode 解题报告]001.Two Sum
- Vue 2.0 起步 (3) 数据流 vuex 和 LocalStorage 实例
- JavaScript基础(七)- JavaScript 变量
- Android Studio JNI cmake 不能生成.so文件
- #define afx_msg
- linux下oracle无图形化界面安装
- 分布式事务(1)消息发送一致性解决方案
- 基于vue的下拉刷新&滚动刷新指令