数据库
首页 > 数据库> > SQL常见调优

SQL常见调优

作者:互联网

select * from emp where empno = 1 or deptno=30
select * from emp where empno like '%123';--不会使用索引,会直接全表扫描
select * from emp where empno like '123%';-- 索引还是可以正常使用的
select * from tab1 t1 left join tab2 t2  on t1.size = t2.size where t1.id>2;
select * from (select * from tab1 where id >2) t1 left join tab2 t2 on t1.size = t2.size;

反例:
select age,name  from user where age <>18;
正例:
//可以考虑分开两条sql写
select age,name  from user where age <18;
select age,name  from user where age >18;
反例:
SELECT DISTINCT * from  user;
正例:
select DISTINCT name from user;

索引并不是越多越好,索引虽然提高了查询的效率,但是也降低了插入和更新的效率。insert 或 update 时有可能会重建索引,所以建索引需要慎重考虑,视具体情况来定。一个表的索引数最好不要超过 5 个,若太多需要考虑一些索引是否没有存在的必要。

反例:
id varchar(20) NOT NULL
正例:
id number(11) NOT NULL 
反例:
select  * from A inner
join B on A.deptId = B.deptId;
正例:
select  memeber.name,deptment.deptName from A member inner
join B deptment on member.deptId = deptment.deptId;
反例:
select job,avg(sal) from emp  group by job having job ='president' 
or job = 'managent'
正例:
select job,avg(sal) from emp where job ='president' 
or job = 'managent' group by job;

标签:join,常见,查询,索引,job,调优,SQL,where,select
来源: https://www.cnblogs.com/arica/p/16490583.html