Received: from localhost (unknown [200.46.204.183]) by mail.postgresql.org (Postfix) with ESMTP id 7827563244E for ; Tue, 3 Mar 2009 13:21:06 -0400 (AST) Received: from mail.postgresql.org ([200.46.204.86]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 30726-02 for ; Tue, 3 Mar 2009 13:21:02 -0400 (AST) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-fx0-f168.google.com (mail-fx0-f168.google.com [209.85.220.168]) by mail.postgresql.org (Postfix) with ESMTP id 592B76334FA for ; Tue, 3 Mar 2009 13:20:59 -0400 (AST) Received: by fxm12 with SMTP id 12so3490586fxm.19 for ; Tue, 03 Mar 2009 09:20:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=lUyDhDw29sno8AKg4543faY8F4kwBBcfjWVPjL+4qjk=; b=Bq63fetkt8+FMlhA5Q7AvoL2PDNN6vy3GG87e2GMb0PkaNvqN6cAU1BgxNAOOFQ1h2 XrCBiCgXsuLrALlTs1wX8jtPoSJSSmUC+7bII3O5E53WrSbkXijSOolusAyaTt/diY60 XbSHOz/uMauZ2KAYZTm+a8roIxcWx1l9S/bcI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=Pw9/ayQM9taeuc9/ehogmcPNvDDi8nF3vti/dtJsr/HMl7m7HXqWiuBDjEsIYH5mA/ lk00C+XoJV5GrvUdsErsavAHIjbmWdxrJW3I+vEB8GF4+GLG4o9FNdAd9qwmg5KqkXfE Ebtc5Fk5XO45bHYuLPO7ZTBuO30XrdpxTStAE= MIME-Version: 1.0 Received: by 10.223.127.4 with SMTP id e4mr2786325fas.100.1236100857996; Tue, 03 Mar 2009 09:20:57 -0800 (PST) In-Reply-To: <603c8f070903030912t36c541ebr50b4576c7a9a5b65@mail.gmail.com> References: <603c8f070903030912t36c541ebr50b4576c7a9a5b65@mail.gmail.com> Date: Tue, 3 Mar 2009 18:20:57 +0100 Message-ID: Subject: Re: Problems with ordering (can't force query planner to use an index) From: Sebastjan Trepca To: Robert Haas Cc: pgsql-performance@postgresql.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0 tagged_above=0 required=5 tests=none X-Spam-Level: X-Archive-Number: 200903/26 X-Sequence-Number: 32948 But it's already attached in the first mail or am I missing something? If you don't see it, check this: http://pastebin.com/d71b996d0 Sebastjan On Tue, Mar 3, 2009 at 6:12 PM, Robert Haas wrote: > On Tue, Mar 3, 2009 at 12:05 PM, Sebastjan Trepca wrot= e: >> Hey, >> >> I have a table that links content together and it currently holds >> about 17 mio records. Typical query is a join with a content table and >> link table: >> >> noovo-new=3D# explain analyze SELECT "core_accessor"."id", >> "core_accessor"."content_type_id", >> "core_accessor"."object_id", "core_accessor"."ordering", >> "core_accessor"."label", "core_accessor"."date_posted", >> "core_accessor"."publish_state", "core_accessor"."nooximity_old", >> "core_accessor"."rising", "core_accessor"."nooximity", >> "core_accessor"."nooximity_old_date_posted", >> "core_accessor"."nooximity_date_posted", "core_accessor"."user_id", >> "core_accessor"."slot_id", "core_accessor"."slot_type_id", >> "core_accessor"."role", "core_base"."object_id", >> "core_base"."content_type_id", "core_base"."abstract", >> "core_base"."abstract_title", "core_base"."image", >> =C2=A0"core_base"."date_posted", "core_base"."date_modified", >> "core_base"."date_expires", "core_base"."publish_state", >> =C2=A0"core_base"."location", "core_base"."location_x", >> "core_base"."location_y", "core_base"."raw", "core_base"."author_id", >> =C2=A0"core_base"."excerpt", "core_base"."state_id", >> "core_base"."country_id", "core_base"."language", >> "core_base"."_identifier", >> =C2=A0"core_base"."slot_url", "core_base"."source_id", >> "core_base"."source_content_type_id", "core_base"."source_type", >> =C2=A0"core_base"."source_value", "core_base"."source_title", >> "core_base"."direct_to_source", "core_base"."comment_count", >> =C2=A0"core_base"."public" FROM "core_accessor" INNER JOIN core_base AS >> core_base ON core_base.content_type_id =3D >> =C2=A0core_accessor.content_type_id AND core_base.object_id =3D >> core_accessor.object_id WHERE (("core_accessor"."slot_type_id" =3D 119 >> =C2=A0AND "core_accessor"."slot_id" =3D 472 AND "core_accessor"."label" = =3D E'' >> AND "core_accessor"."publish_state" >=3D 60 AND >> =C2=A0"core_accessor"."role" IN (0) AND "core_accessor"."user_id" =3D 0)= ) >> order by core_accessor.date_posted, core_accessor.nooximity LIMIT 5 >> ; >> >> =C2=A0 =C2=A0 =C2=A0QUERY PLAN >> ------------------------------------------------------------------------= ---------------------------------------------------------------------------= ------------------ >> =C2=A0Limit =C2=A0(cost=3D31930.65..31930.66 rows=3D5 width=3D860) (actu= al >> time=3D711.924..711.927 rows=3D5 loops=3D1) >> =C2=A0 -> =C2=A0Sort =C2=A0(cost=3D31930.65..31937.80 rows=3D2861 width= =3D860) (actual >> time=3D711.923..711.923 rows=3D5 loops=3D1) >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 Sort Key: core_accessor.date_posted, core_ac= cessor.nooximity >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 Sort Method: =C2=A0top-N heapsort =C2=A0Memo= ry: 31kB >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 -> =C2=A0Nested Loop =C2=A0(cost=3D0.00..318= 83.13 rows=3D2861 width=3D860) >> (actual time=3D0.089..543.497 rows=3D68505 loops=3D1) >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 -> =C2=A0Index Scan usi= ng core_accessor_fresh_idx on >> core_accessor =C2=A0(cost=3D0.00..5460.07 rows=3D2970 width=3D92) (actua= l >> time=3D0.068..54.921 rows=3D69312 loops=3D1) >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 In= dex Cond: ((slot_id =3D 472) AND (slot_type_id =3D >> 119) AND (label =3D ''::text) AND (user_id =3D 0) AND (role =3D 0) AND >> (publish_state >=3D 60)) >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 -> =C2=A0Index Scan usi= ng core_base_pkey on core_base >> (cost=3D0.00..8.88 rows=3D1 width=3D768) (actual time=3D0.004..0.005 row= s=3D1 >> loops=3D69312) >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 In= dex Cond: ((core_base.object_id =3D >> core_accessor.object_id) AND (core_base.content_type_id =3D >> core_accessor.content_type_id)) >> =C2=A0Total runtime: 712.031 ms >> (10 rows) >> >> noovo-new=3D# select * from pg_stat_user_tables where relname=3D'core_ac= cessor'; >> =C2=A0relid | schemaname | =C2=A0 =C2=A0relname =C2=A0 =C2=A0| seq_scan = | seq_tup_read | >> idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | >> n_tup_hot_upd | n_live_tup | n_dead_tup | =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0last_vacuum >> =C2=A0| last_autovacuum | =C2=A0 =C2=A0 =C2=A0 =C2=A0 last_analyze =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| last_autoanalyze >> -------+------------+---------------+----------+--------------+---------= -+---------------+-----------+-----------+-----------+---------------+-----= -------+------------+-------------------------------+-----------------+----= ---------------------------+------------------ >> =C2=A051159 | public =C2=A0 =C2=A0 | core_accessor | =C2=A0 =C2=A0 =C2= =A0 58 | =C2=A0 =C2=A0749773516 | >> 13785608 | =C2=A0 =C2=A0 149165183 | =C2=A0 =C2=A0 =C2=A09566 | =C2=A0 = =C2=A0 =C2=A0 548 | =C2=A0 =C2=A0 =C2=A0 347 | >> =C2=A0206 | =C2=A0 17144303 | =C2=A0 =C2=A0 =C2=A0 =C2=A0251 | 2009-03-0= 3 07:02:19.733778-06 | >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 2009-03-03 06:17:47.784268-06 | >> (1 row) >> >> noovo-new=3D# \d+ core_accessor; >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Table "public.core_accessor" >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Column =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 | =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Type =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 | >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 Modifiers =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| Description >> ---------------------------+--------------------------+-----------------= -------------------------------------------+------------- >> =C2=A0id =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0| bigint =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 | not null >> default nextval('core_accessor_id_seq'::regclass) | >> =C2=A0flavor =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| character varying(32) =C2=A0 =C2=A0| >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0content_type_id =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | integer =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| not null >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0object_id =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = | integer =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| n= ot null >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0publish_state =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | smallint= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | not null >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0date_posted =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | tim= estamp with time zone | not null >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0user_id =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 | integer =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0| >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0slot_id =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 | integer =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0| >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0slot_type_id =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| int= eger =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0role =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0| smallint =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 | >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0ordering =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0| integer =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0| >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0author_id =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = | integer =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0nooximity_old =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | double p= recision =C2=A0 =C2=A0 =C2=A0 =C2=A0 | default 0.0 >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0rising =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| double precision =C2=A0 =C2=A0 =C2=A0 =C2=A0 | default 0.0 >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0label =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 | text =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 | >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0nooximity =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = | double precision =C2=A0 =C2=A0 =C2=A0 =C2=A0 | not null >> default 1.0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | >> =C2=A0nooximity_old_date_posted | timestamp with time zone | >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> =C2=A0nooximity_date_posted =C2=A0 =C2=A0 | timestamp with time zone | >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| >> Indexes: >> =C2=A0 =C2=A0"portal_metainfo_pkey" PRIMARY KEY, btree (id) >> =C2=A0 =C2=A0"portal_metainfo_unique_constr" UNIQUE, btree (content_type= _id, >> object_id, user_id, slot_id, slot_type_id, role, label) CLUSTER >> =C2=A0 =C2=A0"core_accessor_date_idx" btree (date_posted, nooximity) >> =C2=A0 =C2=A0"core_accessor_dated_idx" btree (slot_id, slot_type_id, lab= el, >> user_id, role, publish_state, date_posted, nooximity) >> =C2=A0 =C2=A0"core_accessor_fresh_idx" btree (slot_id, slot_type_id, lab= el, >> user_id, role, publish_state) >> =C2=A0 =C2=A0"core_accessor_popularity_idx" btree (nooximity, date_poste= d) >> Check constraints: >> =C2=A0 =C2=A0"portal_metainfo_object_id_check" CHECK (object_id >=3D 0) >> =C2=A0 =C2=A0"portal_metainfo_owner_id_check" CHECK (slot_id >=3D 0) >> Foreign-key constraints: >> =C2=A0 =C2=A0"portal_metainfo_accessor_id_fkey" FOREIGN KEY (user_id) >> REFERENCES auth_user(id) DEFERRABLE INITIALLY DEFERRED >> =C2=A0 =C2=A0"portal_metainfo_content_type_id_fkey" FOREIGN KEY >> (content_type_id) REFERENCES django_content_type(id) DEFERRABLE >> INITIALLY DEFERRED >> =C2=A0 =C2=A0"portal_metainfo_owner_type_id_fkey" FOREIGN KEY (slot_type= _id) >> REFERENCES django_content_type(id) DEFERRABLE INITIALLY DEFERRED >> Has OIDs: no >> >> >> >> As far as I understand the explain, it fetches 68505 rows, matches >> them with core_base and then tries to sort them? AFAIK it would >> probably be much more effective to just find the records in accessor >> via core_accessor_dated_idx and then lookup the core_base table? But >> for some reason it doesn't want to? >> >> I ran analyze, vacuum and reindex but nothing helped. Queries just eat >> all the I/O and block. There is a huge difference between cached and >> non-cached queries, like 50.000 to 50 ms. >> >> Help! :) > > Please send the output of EXPLAIN ANALYZE for this query. > > ...Robert >