语句只能这样了,不过,你可以在这个字段上建立函数索引来提高效率。
create index i_fun_aaa on tab (substr(work_id,16,17));这个语句在9i里面建立是没有问题的,在Oracle8i中,使用函数索引必须将初始化参数QUERY_REWRITE_ENABLED设置为TRUE
create index i_fun_aaa on tab (substr(work_id,16,17));这个语句在9i里面建立是没有问题的,在Oracle8i中,使用函数索引必须将初始化参数QUERY_REWRITE_ENABLED设置为TRUE
该为:substr(work_id,17,1) ,速度一点都不慢阿
to duanzilin(寻):这两个是一样的,速度慢是因为在字段work_id上使用了函数substr,如果在该字段上有索引,则破坏索引的的使用,而采用全表扫描的策略,对于几百万甚至更大的数据量,则效率就非常低。
to zsfww1205:速度不慢是因为你的数据量很小,你可以做个测试,在表中插入百万数据,然后使用substr函数,你就知道他有多慢了。
特别感谢zakat(听者如歌)
create index i_fun_aaa on tab (substr(work_id,16,17));
这种建索引后,它的查询顺序是什么?能不能解释下!