我目前正在使用我的SQL中的lower()函数。
根据此线程,在列上使用lower()将导致全表扫描: Avoid full table scan
有没有办法防止这种情况或尽量减少扫描的影响?我正在使用Oracle 10。
我的Sql:
select * from USER u where lower(u.USERNAME) = lower(?)
答案 0 :(得分:6)
如果您总是使用小案例进行搜索,则可以在案例降低的用户名上创建索引,就像我在此demo中所做的那样。
这是我演示的语法:
CREATE TABLE t1
(username varchar2(4))
;
CREATE INDEX t1_idx ON t1(lower(username));