查看内容

三十种SQL语句优化方法

  • 2020-03-31 23:42
  • 数据库知识
  • Views
  1. /*+all_rows*/

表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如:

select /*+all+_rows*/ emp_no,emp_nam,dat_in from bsempms where emp_no='scott';

  1. /*+first_rows*/ 表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化. 例如:

select /*+first_rows*/ emp_no,emp_nam,dat_in from bsempms where emp_no='scott';

  1. /*+choose*/ 表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量; 表明如果数据字典中没有访问表的统计信息,将基于规则开销的优化方法; 例如:

select /*+choose*/ emp_no,emp_nam,dat_in from bsempms where emp_no='scott';

  1. /*+rule*/ 表明对语句块选择基于规则的优化方法. 例如:

select /*+ rule */ emp_no,emp_nam,dat_in from bsempms where emp_no='scott';

  1. /*+full(table)*/ 表明对表选择全局扫描的方法. 例如:

select /*+full(a)*/ emp_no,emp_nam from bsempms a where emp_no='scott';

  1. /*+rowid(table)*/ 提示明确表明对指定表根据rowid进行访问. 例如:

select /*+rowid(bsempms)*/ * from bsempms where rowid='aaaaaaaaaaaaaa' and emp_no='scott';

  1. /*+cluster(table)*/ 提示明确表明对指定表选择簇扫描的访问方法,它只对簇对象有效. 例如:

select /*+cluster */ bsempms.emp_no,dpt_no from bsempms,bsdptms where dpt_no='tec304' and bsempms.dpt_no=bsdptms.dpt_no;

  1. /*+index(table index_name)*/ 表明对表选择索引的扫描方法. 例如:

select /*+index(bsempms sex_index) use sex_index because there are fewmale bsempms */ from bsempms where sex='m';

  1. /*+index_asc(table index_name)*/ 表明对表选择索引升序的扫描方法. 例如:

select /*+index_asc(bsempms pk_bsempms) */ from bsempms where dpt_no='scott';

首页 1 2 3 4 末页