例子很简单 - 一个表,一个索引,一个查询:为什么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