Received: from makus.postgresql.org ([98.129.198.125]) by malur.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1TOPhh-0005wL-Ng for pgsql-performance@postgresql.org; Wed, 17 Oct 2012 09:14:18 +0000 Received: from llsd478-a03.servidoresdns.net ([82.223.190.30]) by makus.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1TOPhb-0003am-HM for pgsql-performance@postgresql.org; Wed, 17 Oct 2012 09:14:16 +0000 Received: from [192.168.100.144] (38.Red-83-41-158.dynamicIP.rima-tde.net [83.41.158.38]) by llsd478-a03.servidoresdns.net (Postfix) with ESMTPA id 9E19A380496 for ; Wed, 17 Oct 2012 11:14:08 +0200 (CEST) Message-ID: <507E76DD.9020802@ismsolar.com> Date: Wed, 17 Oct 2012 11:14:05 +0200 From: =?UTF-8?B?UGVkcm8gSmltw6luZXogUMOpcmV6?= User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20120907 Thunderbird/15.0.1 MIME-Version: 1.0 To: pgsql-performance@postgresql.org Subject: Re: limit order by performance issue References: <507C4B8E.3010806@ismsolar.com> In-Reply-To: Content-Type: multipart/alternative; boundary="------------030909030009030607030908" X-Pg-Spam-Score: -1.9 (-) X-Archive-Number: 201210/261 X-Sequence-Number: 48220 This is a multi-part message in MIME format. --------------030909030009030607030908 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable For this query: select var_value from ism_floatvalues where id_signal =3D 29660 order by=20 time_stamp desc limit 1; This is what EXPLAIN returns (can't make EXPLAIN ANALYZE because it=20 "never" ends): "Limit (cost=3D0.00..258.58 rows=3D1 width=3D16)" " -> Index Scan Backward using ism_floatvalues_index_time_stamp on=20 ism_floatvalues (cost=3D0.00..8912076.82 rows=3D34466 width=3D16)" " Filter: (id_signal =3D 29660)" This is EXPLAIN ANALYZE without "limit 1": "Sort (cost=3D93683.39..93769.56 rows=3D34466 width=3D16) (actual=20 time=3D188.643..188.650 rows=3D1 loops=3D1)" " Sort Key: time_stamp" " Sort Method: quicksort Memory: 17kB" " -> Index Scan using ism_floatvalues_index on ism_floatvalues=20 (cost=3D0.00..90494.38 rows=3D34466 width=3D16) (actual time=3D188.019..1= 88.030=20 rows=3D1 loops=3D1)" " Index Cond: (id_signal =3D 29660)" "Total runtime: 189.033 ms" Note that I have created two indexes, the first on id_signal and the=20 second on time_stamp. Regards. El 16/10/2012 21:23, Pavel Stehule escribi=C3=B3: > 2012/10/15 Pedro Jim=C3=A9nez : >> Hello, >> I'm trying to do a simple SQL query over Postgresl 9.0 running on U= buntu. >> >> I have a large table (over 100 million records) with three fields, id_= signal >> (bigint), time_stamp (timestamp) and var_value (float). >> >> My query looks like this: >> >> select var_value from ism_floatvalues where id_signal =3D 29660 order = by >> time_stamp desc limit 1; >> >> So I want to select the last value from a determinated ID (is_signal). >> >> This query runs FOREVER, while if I delete "limit 1" it runs instantly= .... > did you ANALYZE your tables? > > Can you send EXPLAIN ANALYZE result of both queries? > > Regards > > Pavel Stehule > > >> Any help? >> >> Regards. >> >> >> >> >> -- >> Sent via pgsql-performance mailing list (pgsql-performance@postgresql.= org) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgsql-performance --=20 Documento sin t=C3=ADtulo **Pedro Jim=C3=A9nez P=C3=A9rez **p.jimenez@ismsolar.com **** =09 **Innovaci=C3=B3n en Sistemas de Monitorizaci=C3=B3n, S.L.** Edificio Hevimar C/ Iv=C3=A1n Pavlov 2 y 4 - Parcela 4 2=C2=AA Planta Local 9 Parque Tecnol=C3=B3gico de Andaluc=C3=ADa 29590 Campanillas (M=C3=A1laga) Tlfno. 952 02 07 13 contacto@ismsolar.com firma_gpt.jpg, 1 kB =09 Antes de imprimir, piensa en tu responsabilidad y compromiso con el=20 MEDIO AMBIENTE! Before printing, think about your responsibility and commitment with the=20 ENVIRONMENT! CL=C3=81USULA DE CONFIDENCIALIDAD.- Este mensaje, y en su caso, cualquier= =20 fichero anexo al mismo, puede contener informaci=C3=B3n confidencial o=20 legalmente protegida (LOPD 15/1999 de 13 de Diciembre), siendo para uso=20 exclusivo del destinatario. No hay renuncia a la confidencialidad o=20 secreto profesional por cualquier transmisi=C3=B3n defectuosa o err=C3=B3= nea, y=20 queda expresamente prohibida su divulgaci=C3=B3n, copia o distribuci=C3=B3= n a=20 terceros sin la autorizaci=C3=B3n expresa del remitente. Si ha recibido e= ste=20 mensaje por error, se ruega lo notifique al remitente enviando un=20 mensaje al correo electr=C3=B3nico contacto@ismsolar.com y proceda=20 inmediatamente al borrado del mensaje original y de todas sus copias.=20 Gracias por su colaboraci=C3=B3n. --------------030909030009030607030908 Content-Type: multipart/related; boundary="------------050503000607070205060604" --------------050503000607070205060604 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable For this query:

select var_value from ism_floatvalues where id_signal =3D 29660 order by time_stamp desc limit 1;

This is what EXPLAIN returns (can't make EXPLAIN ANALYZE because it "never" ends):

"Limit=C2=A0 (cost=3D0.00..258.58 rows=3D1 width=3D16)"
"=C2=A0 ->=C2=A0 Index Scan Backward using ism_floatvalues_index_t= ime_stamp on ism_floatvalues=C2=A0 (cost=3D0.00..8912076.82 rows=3D34466 width=3D= 16)"
"=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Filter: (id_signal =3D 29= 660)"

This is EXPLAIN ANALYZE without "limit 1":

"Sort=C2=A0 (cost=3D93683.39..93769.56 rows=3D34466 width=3D16) (actu= al time=3D188.643..188.650 rows=3D1 loops=3D1)"
"=C2=A0 Sort Key: time_stamp"
"=C2=A0 Sort Method:=C2=A0 quicksort=C2=A0 Memory: 17kB"
"=C2=A0 ->=C2=A0 Index Scan using ism_floatvalues_index on ism_flo= atvalues=C2=A0 (cost=3D0.00..90494.38 rows=3D34466 width=3D16) (actual time=3D188.019..188.030 rows=3D1 loops=3D1)"
"=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Index Cond: (id_signal =3D= 29660)"
"Total runtime: 189.033 ms"

Note that I have created two indexes, the first on id_signal and the second on time_stamp.
Regards.

El 16/10/2012 21:23, Pavel Stehule escribi=C3=B3:
2012/10/15 Pedro Jim=C3=A9nez <p.jimenez@ismsola=
r.com>:
Hello,
  I'm trying to do a simple SQL query over Postgresl 9.0 running on Ubunt=
u.

I have a large table (over 100 million records) with three fields, id_sig=
nal
(bigint), time_stamp (timestamp) and var_value (float).

My query looks like this:

select var_value from ism_floatvalues where id_signal =3D 29660 order by
time_stamp desc limit 1;

So I want to select the last value from a determinated ID (is_signal).

This query runs FOREVER, while if I delete "limit 1" it runs instantly...=
.
did you ANALYZE your tables?

Can you send EXPLAIN ANALYZE result of both queries?

Regards

Pavel Stehule


Any help?

Regards.




--
Sent via pgsql-performance mailing list (pgsql-performance@=
postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performa=
nce

--
Documento sin t=C3=ADtulo

Pedro Jim=C3=A9nez P=C3= =A9rez
p.jimenez@ismsola= r.com

Innovaci=C3=B3n en Sistemas de Monitorizaci=C3=B3n, S.L.=
Edificio Hevimar
C/ Iv=C3=A1n Pavlov
2 y 4 - Parcela 4 2=C2=AA Planta Local 9
Parque Tecnol=C3=B3gico de Andaluc=C3=ADa
29590 Campanillas (M=C3=A1laga)
Tlfno. 952 02 07 13
contacto@ismsolar.com

3D"firma_gpt.jpg,

Antes de imprimir, piensa en tu responsabilidad y compromiso con el MEDIO AMBIENTE!

Before printing, think about your responsibility and commitment with the ENVIRONMENT!

CL=C3=81USULA DE CONFIDENCIALIDAD.- Este mensaje, y en su caso, cualquier fichero anexo al mismo, puede contener informaci=C3=B3n confidencial o legalmente protegida (LOPD 15/1999 de 13 de Diciembre), siendo para uso exclusivo del destinatario. No hay renuncia a la confidencialidad o secreto profesional por cualquier transmisi=C3=B3n defectuosa o err=C3=B3nea, y queda expresamente prohibida su divulgaci=C3=B3n, copia o distribuci=C3=B3n a terceros sin la autorizaci=C3=B3n= expresa del remitente. Si ha recibido este mensaje por error, se ruega lo notifique al remitente enviando un mensaje al correo electr=C3=B3nico contacto@ismsolar.com y proceda inmedi= atamente al borrado del mensaje original y de todas sus copias. Gracias por su colaboraci=C3=B3n.

--------------050503000607070205060604 Content-Type: image/gif; name="Logo_Ism.gif" Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="Logo_Ism.gif" R0lGODlhZAA0AMQAAPz8+/6xCgUrdubn6J+uydjY2FFsn/zwzsnJyTNTj/zkqvzJVfzaifzR bfLy8/3349LZ5f26JmyDroudvv378rK+1PzBPOrr7cPN3N7g4u/v8Bc7gPb29/n5+czMzP// /yH5BAAAAAAALAAAAABkADQAAAX/4CeOZGmeaKqubOu+cCzPdG3fOPwoTOM3DMWBkisaURTF IhJoOp2WxsEFIRAwpgthwr1eTprt5ApAAQaOMk5heVoWv4WF2ZyuCIL85jvCbPKAAhsGBBwk eIETKBIbGwmENRQNUAxDJhQHPQ8sEoAbDiMZf4GkCQMjiJ4aJhmkEjQUbQERDGo4E4AJHSOd ngRVowIGqJ55BCa4ga8yFAtNFpsnAA8HBw9ELckCCSMDwQIVxIAQInjfwyQcCYKAyzEMz9Ek AAcNc04RFpV3uSMVgehEOFhnTIQ2dp9I/Cvm7sUBJhHskDgga5aFe00iLJBnIlXATqOOkegl YFmyRoDC//HKk2BUQxeTAjAwAW9WpWsAMCmIGUEBCo8jDAQiR0KbSZZC8wQUJYjAqIAuHkDE NqImA6omDjgL4LMjoIBJBWUosbCkQT2p9pwVBuFpDAVNZpKAy3XeNZpNuir8GtQT0T7t1u4h CE4EQQIX3MKIKVFEG7kfKDCYo1GBrQ+TLGD9UJbb2VGKSGAI/OEkB6MfRgty4E1pDGcROB6Y he2BrDdMGtiSKpNsPxGJAVYYUMaBgUdYSuvRAMFTh17DgguDESuA5rkBGoyA3VVS76rWL3cm AYGwngQTMIAqqudUWAIEw0mHygJAm+sj4MqdXZfEJHmzRbQXS5d1MIF5nhiQnP9ygpyS1h8J rKKBYi7YRxt2clGgUVbfRcaEXpzlYgsAGUBwAQYSIJhHaCeNxZQyInBAoQuwNTbbAiPcVYKG OI7w2IDbqFHeHyJ1UIV5G5DToghh5aGSjK7BUBOIGsa2wkUjWAhZiAQySRp7gByzZIij6BIj QfSxwJ8FJcCzpQkPBNDjB7yBOJ4IJCVw2QckCSCmHkQ5EExoH3RAkGcvVNefCHWmAI9edDWW CqKq5bHgB6lss8pJf5G0oKEsyVCTBZfB1ZMJAMCD3wfOrIqpiCNoY8AXGfSZQHKcjnCBBJBk eSgzdLxZ0wIKPEANG7NIRJd2QJqJyiiOnMMHn+NwEuX/W068SdETTjQgj22zcPQBABBggMG0 IzhwILSP/CUCBgkkIMEuKxgJgSEzxCTTnpksAAcDHIG7aAwXlAvBeimUAcCeauw5AwBbydmY CgrQwawJGoDCAQC7cJABvgLtosHCA5QMHHEfZAAAB6t4bEgaHXhQaAcgywCAvtkd4LAIACjR 7c4pu6jBKRkUUAAJBRDdgQNGF7CKByYXAMAFpxRwASjExfwBBwWMZUPFbjQgRDUH7FQRLSoM cLQGVn9w9SmhjJW1Axpc/YEHTn9AnANfqA3KBSSL4AHCNTzAAB3cIp7RAhOjOgK90iQMOAqQ l7BKEUkswS0UUhzh+eeRld0D/xBCAA366ainrvrqrLfu+uuwxx47x3RTPUAGuOfedO64lzzA 1Rx0YLrs9fF9u9EeJI/A8sw37/zzyye/++8OVE48CR0MXbTyzSfv/ffghy8+98xLn8HvG8ee /fbdj+++B9DH7/z37SetQc2pr6xB0dG/7339uztfyS5AQN/prmnkgx7eMqAB66WObfAbX/+6 NoD7LYwGC+OA8YpWgARGr2vVYx3T4IcA7uENDcMrwsouwEESls9qDvycxzroAQbGsHW0U1sH XziAGx7hgteTBsvURsIT+jCIrcseEUtotRQicXVKLEAJM0C4JxKPAzpsohWRCID9JQ1/W5wd ay6QvgkwXm9lITRBCAAAOw== --------------050503000607070205060604 Content-Type: image/jpeg; name="graphics2" Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="graphics2" 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 RlU10bMgAAAAAElFTkSuQmCC --------------050503000607070205060604-- --------------030909030009030607030908--