Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1YgKAr-0007lk-0r for pgsql-performance@arkaria.postgresql.org; Thu, 09 Apr 2015 21:39:45 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1YgKAp-0003tL-L2 for pgsql-performance@arkaria.postgresql.org; Thu, 09 Apr 2015 21:39:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1YgKAh-0003hq-9I for pgsql-performance@postgresql.org; Thu, 09 Apr 2015 21:39:35 +0000 Received: from post.visena.com ([46.226.10.50]) by magus.postgresql.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1YgKAc-0001Qg-8k for pgsql-performance@postgresql.org; Thu, 09 Apr 2015 21:39:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=visena.com; s=20141101.wh; h=Content-Type:MIME-Version:Subject:Message-ID:To:From:Date; bh=ZXlUtyTIvxOwM/mAhXzVQm7sO7tCR6TfDuP7+k1PBG4=; b=NSh8exJQ8VWetAzlourTg0MpIs7rvSXAjxpk5pxzGDvO56SnMKESWtA9ofK1XukINBLLW8ME0dlACsrALtJWMCp4vDxqEAJ7Ba1GAIrqQ36LfIyPx88hPtRPivyOroU3ccQNwnK0HcvUBh/3TmvD7Qj5dTBTd+tb3YH0iQLUbCA=; Received: from [10.0.1.10] (helo=tc7-visena.wh.internal.visena.com) by post.visena.com with esmtp (Exim 4.82) (envelope-from ) id 1YgKAY-0003h1-Ng for pgsql-performance@postgresql.org; Thu, 09 Apr 2015 23:39:28 +0200 Received: from localhost ([127.0.0.1] helo=tc7-visena.wh.internal.visena.com) by tc7-visena.wh.internal.visena.com with esmtp (Exim 4.82) (envelope-from ) id 1YgKAY-0003I8-P4 for pgsql-performance@postgresql.org; Thu, 09 Apr 2015 23:39:26 +0200 Date: Thu, 9 Apr 2015 23:39:26 +0200 (CEST) From: Andreas Joseph Krogh To: "pgsql-performance@postgresql.org" Message-ID: Subject: Cannot get query to use btree-gin index when ORDER BY MIME-Version: 1.0 X-Mailer: Visena Mail 1.9.0-SNAPSHOT X-Spam-Score: 0.3 X-Spam-Report: SpamAssasin (score=0.3, required 5.0 ALL_TRUSTED=-1, HTML_IMAGE_ONLY_24=1.282, HTML_MESSAGE=0.001) X-Pg-Spam-Score: -0.4 (/) Content-Type: multipart/related; boundary="----=_Part_138_187269198.1428615566683" List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-performance Precedence: bulk Sender: pgsql-performance-owner@postgresql.org ------=_Part_137_1839181217.1428615566683 Content-Type: multipart/related; boundary="----=_Part_138_187269198.1428615566683" ------=_Part_138_187269198.1428615566683 Content-Type: multipart/alternative; boundary="----=_Part_139_569086253.1428615566698" ------=_Part_139_569086253.1428615566698 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi all. =C2=A0 Using PG-9.4 =C2=A0 I have a query which goes something like= this =C2=A0 The=20 simplified schema is like this: =C2=A0 CREATE TABLE message( id serial PRIM= ARY KEY,=20 subject varchar NOT NULL, folder_id integer NOT NULL REFERENCES folder(id),= =20 received timestamp not null, fts_all tsvector ); =C2=A0 create index=20 message_fts_all_folder_idx ON message using gin (fts_all, folder_id); =C2= =A0 SELECT=20 m.id, m.subject =C2=A0 FROM message m WHERE m.folder_id =3D 1 AND m.fts_all= @@=20 to_tsquery('simple', 'foo') ORDER BY received DESC LIMIT 10; =C2=A0 ... =C2= =A0 On my=20 dataset it uses an index I have on (folder_id, received DESC), then filters= the=20 result, which is not optimal when searching in > 1million messages and the= =20 result is large and I'm only after the first (newest) 10. =C2=A0 What I'd l= ike is to=20 have an index like this: =C2=A0 create index message_fts_all_folder_idx ON = message=20 using gin (fts_all, folder_id, received DESC); =C2=A0 but GIN doesn't allow= ASC/DESC=20 modifiers. =C2=A0 Any hints on how to optimize this? =C2=A0 Thanks. =C2=A0 = -- Andreas Joseph=20 Krogh CTO / Partner - Visena AS Mobile: +47 909 56 963 andreas@visena.com= =20 www.visena.com =20 ------=_Part_139_569086253.1428615566698 Content-Type: text/html;charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi all.
=C2=A0
Using PG-9.4
=C2=A0
I have a query which goes something like this
=C2=A0
The simplified schema is like this:
=C2=A0
CREATE TABLE message(
id serial PRIMARY KEY,
subject varchar NOT NULL,
folder_id integer NOT NULL REFERENCES folder(id),
received timestamp not null,
fts_all tsvector
);
=C2=A0
create index message_fts_all_folder_idx ON message using gin (fts_all,= folder_id);
=C2=A0
SELECT m.id, m.subject
=C2=A0 FROM message m
WHERE m.folder_id =3D 1 AND m.fts_all @@ to_tsquery('simple', 'foo')
ORDER BY received DESC LIMIT 10;
=C2=A0
...
=C2=A0
On my dataset it uses an index I have on (folder_id, received DESC), t= hen filters the result, which is not optimal when searching in > 1millio= n messages and the result is large and I'm only after the first (newest) 10= .
=C2=A0
What I'd like is to have an index like this:
=C2=A0
create index message_fts_all_folder_idx ON message using gin (fts_all,= folder_id, received DESC);
=C2=A0
but GIN doesn't allow ASC/DESC modifiers.
=C2=A0
Any hints on how to optimize this?
=C2=A0
Thanks.
=C2=A0
--
Andrea= s Joseph Krogh
CTO / Partner<= /span> - Visena AS
Mobile: +47 90= 9 56 963
=3D""
------=_Part_139_569086253.1428615566698-- ------=_Part_138_187269198.1428615566683 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Disposition: inline Content-ID: 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 ------=_Part_138_187269198.1428615566683-- ------=_Part_137_1839181217.1428615566683--