1
我有一个大的数据库表(> 300'000记录),我想根据一个参数查询字段,而加入如下:火鸟SQL查询优化
SELECT F1, F2, ..., IS_NOT_TO_LOAD FROM MY_TABLE WHERE IS_NOT_TO_LOAD IS DISTINCT FROM 1;
我已经在表上创建一个索引WRT IS_NOT_TO_LOAD
场:
CREATE ASC INDEX "IND_MY_TABLE_IS_NOT_TO_LOAD" ON "MY_TABLE" ("IS_NOT_TO_LOAD");
我不是很熟悉的执行计划,但是我希望查询使用索引的计划,而不是自然的执行计划。
我在这里做错了什么,或者有没有更好的方法来优化我的查询?
UPDATE 我发现,使用下面的查询:
SELECT F1, F2, ..., IS_NOT_TO_LOAD FROM MY_TABLE WHERE IS_NOT_TO_LOAD < 1;
使用计划PLAN (A INDEX (IND_MY_TABLE_IS_NOT_TO_LOAD))
,但我没有用这个,因为我有时有0或空值,有时0
什么'IS_NOT_TO_LOAD为空或IS_NOT_TO_LOAD <> 1'给?请注意,这听起来像一个低选择性的列,所以这可能是Firebird不喜欢使用索引的原因。 –
@MarkRotteveel它是一样的 - 它使用自然计划... – neggenbe