QS:SQL优化需要注意哪些点?
1、尽量将被查询字段写出来,尽量避免例如:select * from table_name;如果使用*,数据库需要查询数据字典才能获取表中所有字段,这样会消耗时间。
2、被排序字段,也可以加索引,例如:order by column1,column2,这样直接使用索引去排序,会大大提高效率。
3、对于使用模糊查询的字段,尽量给该字段加索引,但前提是like后第一位不能是%,否则不会使走索引,对该列全局匹配。尽量使用例如:select column1,column2 from table_name where column3 like 'xxx%'。
4、如果可以,使用rowid查询效率最高。原因rowid组成:对象ID(OBJECTID)+文件ID+块ID+ROWID
CASE:复制1000万行emp数据,在建立索引前后查询时间对比。
复制emp1表,重复插入数据,开启计时:
create table emp1 as select * from emp1;
insert into emp1 select * from emp1;
set timing on;
select * from (select * from emp3 order by empno)t where rownum <=10;
`
给被排序的字段加索引,查询并计时:
create index emp1_index on emp1(empno); select * from (select * from emp3 order by empno)t where rownum <=10;