记某高手的优化方法:用合适的函数索引来避免看似无法避免的全表扫描
原SQL:
•drop index idx_t1;
•create index idx_t1 on t1(object_name);
•select object_name,object_id from t1 where object_name like '%EMP';
•create index idx_t1 on t1(object_name);
•select object_name,object_id from t1 where object_name like '%EMP';
调整后的SQL:
•select object_name,object_id from t1 where reverse(object_name) like reverse('%EMP');
•create index idx_fun_t1 on t1(reverse(object_name));
•create index idx_fun_t1 on t1(reverse(object_name));
调整后的SQL大大降低了逻辑读,优化了性能。
附:
reverse函数说明:oracle 提供一个reverse函数,可以实现将一个对象反向转换,针对数据库内部存储的对象编码进行反转。在比如:数字,中文等.因为实现存储的并不是直接编码后的结果,而是经过某种内部转换后实现的,因此,在转换完成后,并不一定是自己想要的结果。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22308399/viewspace-749505/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22308399/viewspace-749505/