Query planner, 7.2b1 select ... order by

Поиск
Список
Период
Сортировка
От mlw
Тема Query planner, 7.2b1 select ... order by
Дата
Msg-id 3BDC1BF9.900149B4@mohawksoft.com
обсуждение исходный текст
Ответы Re: Query planner, 7.2b1 select ... order by  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
I got an interesting question, and I can probably see both sides of any debate,
but.....

Say you have a fairly large table, several million records. In this table you
have a key that has a fairly good number of duplicate rows. It is a users
favorites table, each user will have a number of entries.

My problem is, if you do a select by the user name, it does an index scan. If
you do a select from the whole table, ordered by the user name, it does a
sequential scan not an index scan. It is arguable that this may be a faster
query, but at the cost of many more resources and a very long delay before any
results are returned. Is this the best behavior?

Anyone have any opinions?


cdinfo=# select count(*) from favorites ; count
---------4626568
(1 row)

cdinfo=# explain select * from favorites where scene_name_full = 'someone' ;
NOTICE:  QUERY PLAN:

Index Scan using fav_snf on favorites  (cost=0.00..258.12 rows=64 width=73)

EXPLAIN
cdinfo=# explain select * from favorites order by scene_name_full ;
NOTICE:  QUERY PLAN:

Sort  (cost=1782827.92..1782827.92 rows=4724736 width=73) ->  Seq Scan on favorites  (cost=0.00..113548.36 rows=4724736
width=73)

EXPLAIN
cdinfo=# set enable_seqscan=FALSE ;
SET VARIABLE
cdinfo=# explain select * from favorites order by scene_name_full ;
NOTICE:  QUERY PLAN:

Index Scan using fav_snf on favorites  (cost=0.00..18682771.23 rows=4724736
width=73)

EXPLAIN


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Jean-Michel POURE
Дата:
Сообщение: Re: UNICODE
Следующее
От: Marko Kreen
Дата:
Сообщение: Re: UNICODE