我创建了一个带有索引varchar2列的Oracle表,称为"ID".
我正在使用的软件正在读取此表,但不是运行像这样的查询
select * from table_name where ID='something'
Run Code Online (Sandbox Code Playgroud)
它确实(注意值之前的额外"N")
select * from table_name where ID=N'something'
Run Code Online (Sandbox Code Playgroud)
这导致某种字符转换.
问题是,当第一个查询执行范围扫描时,第二个查询正在执行全表扫描.
由于我无法修改运行此软件的查询,我应该使用哪种数据类型而不是varchar2,以便"N"函数执行的转换不意味着全表扫描?