⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 多字段索引测评结果.txt

📁 orale培训教材包括了所有的sql说明和实例
💻 TXT
字号:
--对于多个子段组成的索引,测试分析其结果
SQL> DROP TABLE PERSON;

表已丢弃。

SQL>  create table person (id number(10),name varchar2(20));

表已创建。

--建立基于id,name的ind_2-------------------------------------------------
SQL> CREATE INDEX ind_2 on person(id,name);

索引已创建。

SQL> --data insert
SQL> declare
  2  n_loop number;
  3  s_time date;
  4  --s_time varchar2;
  5  e_time date;
  6  begin
  7    select sysdate into s_time from dual ;
  8    for n_loop in 1..100000 loop
  9   insert into person values(n_loop,'name'||n_loop);
 10   commit;
 11    end loop;
 12    select sysdate into e_time from dual ;
 13    dbms_output.put_line(to_char((e_time),'hh:mi:ss'));
 14    dbms_output.put_line(to_char((s_time),'hh:mi:ss'));
 15  end;
 16  /

PL/SQL 过程已成功完成。

SQL> analyze table person compute statistics;

表已分析。

--使用两字段index的第2字段 name--------------------------------------------------
SQL>  explain plan for select * from person where name='name123';

已解释。

SQL>  select cost, operation from plan_table;

      COST OPERATION
---------- ------------------------------
        42 SELECT STATEMENT
        42 TABLE ACCESS

SQL> delete from plan_table;

已删除2行。


SQL> explain plan for select * from person where id='123';

已解释。
--使用两字段index的第1字段 id--------------------------------------------------
SQL> select cost, operation from plan_table;

      COST OPERATION
---------- ------------------------------
         2 SELECT STATEMENT
         2 INDEX

结论:
只有在id出现在where 子句中,才启动ind_2
对于多个子段组成的索引,当索引包括的第一个字段出现在where子句中,dbms自动调用索引。

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -