索引为什么没起作用?
表:t_guidangbak,字段id_no varchar2(18),有170万数据
建索引:create index inx_t_guidangbak_id_no on t_guidangbak(id_no)
SQL> set timing on
(1)
SQL> declare l_id nvarchar2(18);
2 l_orno varchar2(50);
3 l_sql varchar2(100);
4 begin
5 l_id:='370481197711072218';
6 l_sql:='select original_no from t_guidangbak where id_no=:id_no';
7 execute immediate l_sql into l_orno using l_id;
8 end;
9 /
PL/SQL 过程已成功完成。
已用时间: 00: 00: 06.03
(2)
SQL> declare l_id varchar2(18);
2 l_orno varchar2(50);
3 l_sql varchar2(100);
4 begin
5 l_id:='370481197711072218';
6 l_sql:='select original_no from t_guidangbak where id_no=:id_no';
7 execute immediate l_sql into l_orno using l_id;
8 end;
9 /
PL/SQL 过程已成功完成。
已用时间: 00: 00: 00.00
(1)和(2)的区别:
declare l_id nvarchar2(18);
declare l_id varchar2(18);
(1)中声明的l_id和字段id_no类型不一样
从执行用时来看,(1)和没建索引用时是差不多的,可见索引没起作用。
问题:索引为什么因为类型的不一样就没起作用?