我目前在我的 SQL 中使用 lower() 函数。
根据这个线程,在列上使用 lower() 将导致全表扫描: Avoid full table scan
有没有办法防止这种情况或将扫描的影响降到最低?我正在使用 Oracle 10。
我的SQL:
select * from USER u where lower(u.USERNAME) = lower(?)
最佳答案
如果您总是使用小写搜索,您可以在小写的用户名上创建索引,就像我在 demo 中所做的那样.
这是我演示的语法:
CREATE TABLE t1
(username varchar2(4))
;
CREATE INDEX t1_idx ON t1(lower(username));
关于SQL有没有办法在不进行全表扫描的情况下使用Lower,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20848838/