<i>&gt; Index scans imply extra disk seeks to fetch the index.</i><p>This is no longer true in this generality, because since PostgreSQL 9.2 there are also index-only scans. Those scans take the data directly from the index, without going through the original rows at all. Of course, this works only under certain conditions. See also:<p><a href="http:&#x2F;&#x2F;michael.otacoo.com&#x2F;postgresql-2&#x2F;postgresql-9-2-highlight-index-only-scans&#x2F;" rel="nofollow">http:&#x2F;&#x2F;michael.otacoo.com&#x2F;postgresql-2&#x2F;postgresql-9-2-highli...</a><p><a href="http:&#x2F;&#x2F;www.postgresql.org&#x2F;docs&#x2F;9.2&#x2F;static&#x2F;index-scanning.html" rel="nofollow">http:&#x2F;&#x2F;www.postgresql.org&#x2F;docs&#x2F;9.2&#x2F;static&#x2F;index-scanning.htm...</a><p>&quot;If the index stores the original indexed data values (and not some lossy representation of them), it is useful to support index-only scans, in which the index returns the actual data not just the TID of the heap tuple. This will only work if the visibility map shows that the TID is on an all-visible page; else the heap tuple must be visited anyway to check MVCC visibility. But that is no concern of the access method&#x27;s.&quot;