Woo*_*Moo 3 sql oracle indexing performance
是否可以为数据库中的特定列值生成索引?例如,我有一个名为status具有值的列{0,1,2,3},但2最常调用状态,因此我想专门为该值编制索引.这可能吗?我想这个语法类似于你可以像这样下降索引的方式:
create index foo on table(bar desc);
Run Code Online (Sandbox Code Playgroud)
我可能会看到这个工作:
create index foo on table(status 2);
Run Code Online (Sandbox Code Playgroud)
这会missing right parenthesis在SQLdeveloper中针对Oracle数据库生成错误.
基于功能的索引......
create index foo on table(case status when 2 then status end)
Run Code Online (Sandbox Code Playgroud)
......和一个谓词......
...
where case status when 2 then status end = 2
Run Code Online (Sandbox Code Playgroud)
......就是这样.
这利用了从btree索引中省略空值.如果状态为2,则case表达式返回"2",否则返回null,因此索引仅包含status ="2"的条目.正如您所见,您确实需要不同的谓词.坦率地说,其他一些RDBMS做得更好一些.