函数的索引操作,算是 Oracle 里比较实用的性能优化小技巧了。是那种经常要对日期字段做筛选的场景,用TO_CHAR
格式化查询年、月啥的,挺常见。你如果还只是单纯用函数字段,又没建索引,那查询效率会被拖得蛮厉害的。
举个例子,像select * from staff_member where TO_CHAR(birth_day, 'YYYY') = '2003'
这种查法,其实可以直接对函数结果建索引:
CREATE INDEX Ind_emp_birth ON staff_member (TO_CHAR(birth_day, 'YYYY'));
这样写,查询速度提升还是蛮的。不过要注意,函数索引不是万能的,写法要标准,字段不能有 NULL 值,SQL 里函数调用形式要跟索引里一模一样,不然就用不上索引了。响应慢、表数据多的时候,这种优化还挺值一试。
你要是还想多看看 TO_CHAR 的用法或者其他相关优化技巧,可以翻翻下面这些:
如果你平时 SQL 写得多,而且经常日期类型字段,那这个方法可以试试,能省不少执行时间哦。