Re: Extreme slow select query 8.2.4
От | Henrik Zagerholm |
---|---|
Тема | Re: Extreme slow select query 8.2.4 |
Дата | |
Msg-id | 976CDC49-082B-4612-B6A4-4B46B5109829@mac.se обсуждение исходный текст |
Ответ на | Re: Extreme slow select query 8.2.4 (Heikki Linnakangas <heikki@enterprisedb.com>) |
Список | pgsql-performance |
6 aug 2007 kl. 21:47 skrev Heikki Linnakangas: > Henrik Zagerholm wrote: >> I know the query retrieves way more which is really necessary to >> show to >> the user so I would gladly come up with a way to limit the query >> so the >> GUI doesn't hang for several minutes if a user does a bad search. >> The problem is that I don't know a good way of limit the search >> efficiently as only going on tbl_file with limit 100 could make the >> query only to return 10 rows if the user doesn't have access to >> 900 of >> the files (This is what the join with tbl_acl does). Using cursors >> doesn't help because I really don't retrieve that much data > > Could you just add a LIMIT 100 to the end of the query, if 100 rows is > enough? That would cut the runtime of the query, if there's a quicker > plan to retrieve just those 100 rows. As you can see in the query I already have a limit 20 and it doesn't make any difference as the query still does the big joins between tbl_file, tbl_file_structure and tbl_acl. This is why I think I have to come up with a way of using sub select with internal limits. Maybe have a cursor like procedure using these so I always get the correct number of lines back. > > Another alternative is to use statement_timeout. If a query takes > longer > than specified timeout, it's automatically aborted and an error is > given. Interesting! I'll take a look at that. Thanks, henrik > > -- > Heikki Linnakangas > EnterpriseDB http://www.enterprisedb.com
В списке pgsql-performance по дате отправления: