例子很簡單 - 一個表,一個索引,一個查詢:爲什麼PostgreSQL對索引列執行順序掃描?
CREATE TABLE book
(
id bigserial NOT NULL,
"year" integer,
-- other columns...
);
CREATE INDEX book_year_idx ON book (year)
EXPLAIN
SELECT *
FROM book b
WHERE b.year > 2009
給我:
Seq Scan on book b (cost=0.00..25663.80 rows=105425 width=622)
Filter: (year > 2009)
爲什麼它不執行索引掃描呢? 我錯過了什麼?
5-10%取決於一些配置設置和數據存儲。這不是一個硬數字。 – 2011-03-05 13:05:09
@Frank:這就是爲什麼我說「大約」:)但是,感謝您指出 – 2011-03-05 13:06:27
有趣的是,這爲我解釋了很多事情:) 事實上,當我選擇年份> 2010年,它確實索引掃描。 謝謝! – wajda 2011-03-05 15:24:02