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