SQL有没有办法使用Lower而不进行全表扫描

时间:2013-12-30 22:47:47

标签: sql database oracle

我目前正在使用我的SQL中的lower()函数。

根据此线程,在列上使用lower()将导致全表扫描: Avoid full table scan

有没有办法防止这种情况或尽量减少扫描的影响?我正在使用Oracle 10。

我的Sql:

select * from USER u where lower(u.USERNAME) = lower(?)

1 个答案:

答案 0 :(得分:6)

如果您总是使用小案例进行搜索,则可以在案例降低的用户名上创建索引,就像我在此demo中所做的那样。

这是我演示的语法:

CREATE TABLE t1
    (username varchar2(4))
;

CREATE INDEX t1_idx ON t1(lower(username));