索引只支持明确的条件值,比如=或者LIKE。如果条件中包含某些不确定因素,比如<>,那么索引将无法改善性能。条件中包含OR时,优化器通常停止工作。换句话说,使用索引时,OR条件的字段是不生效的。一个例外是OR关系互相独立。因此,对于包含OR和索引字段结合的条件,有时需要修改条件的形式。(可以看下面的例子)
注意某些数据库的索引会忽略0,意味着查询0值时,没有索引可用。
如有必要,可以在ABAP SQL(Open SQL)中使用附加项%_HINTS为database hints来调整系统优化器,以决定使用哪个二级索引。
例子下面这个句子会导致优化器无法使用索引,因为遇到了OR:
SELECT * FROM spfli WHERE carrid = 'LH' AND ( CITYFROM = 'FRANKFURT' OR cityfrom = 'NEW YORK' ).