說,我有一個表my_table
,其中的字段爲kind:string
,並且在此字段上有一個索引。在Postgres中使用OR條件時,跳過查詢計劃中的索引
我注意到的Postgres建立了查詢兩個不同的查詢計劃:
SELECT * FROM my_table
WHERE kind = 'kind1' OR kind IS NULL;
和
SELECT * FROM my_table
WHERE kind = 'kind1';
而第二個做第一個不使用索引。爲什麼?
我知道有很多條件可能會使用索引或不使用索引,而且我已閱讀了很多關於查詢計劃的內容,但這種情況仍然不清楚。
實際上'kind IN('kind1',NULL)'等於'kind ='kind1''。 – Abelisto
@Abelisto,愚蠢的問題,編輯它 –