Received: from maia.hub.org (maia-3.hub.org [200.46.204.243]) by mail.postgresql.org (Postfix) with ESMTP id 086EC1337B53 for ; Tue, 28 Sep 2010 18:35:47 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.243]) (amavisd-maia, port 10024) with ESMTP id 47042-06-2 for ; Tue, 28 Sep 2010 21:35:39 +0000 (UTC) X-Greylist: delayed 00:37:50.125609 by SQLgrey-1.7.6 Received: from zebedee.cranntara.net (zebedee.cranntara.net [91.186.7.79]) by mail.postgresql.org (Postfix) with ESMTP id 4BCEA1337B6C for ; Tue, 28 Sep 2010 18:35:39 -0300 (ADT) Received: from [88.210.158.208] (helo=bolek.coachhouse) by zebedee.cranntara.net with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1P0hFA-0004Rx-6N for pgsql-sql@postgresql.org; Tue, 28 Sep 2010 21:57:46 +0100 Received: from [192.168.0.32] (helo=dick.coachhouse ident=tarlika) by bolek.coachhouse with esmtp (Exim 4.69) (envelope-from ) id 1P0gu9-0002sz-Dv for pgsql-sql@postgresql.org; Tue, 28 Sep 2010 21:36:01 +0100 Date: Tue, 28 Sep 2010 21:36:00 +0100 From: "Tarlika Elisabeth Schmitz" Cc: Subject: Re: identifying duplicates in table with redundancies Message-ID: <20100928213600.4db60ba4@dick.coachhouse> In-Reply-To: <5F1C28C4D61848D6A012C5DD84B22226@marktestcr.marktest.pt> References: <20100923223940.5019475e@dick.coachhouse> <8590CAE9E5504E23AB08C4EF31EA066F@marktestcr.marktest.pt> <20100924171226.6000b310@dick.coachhouse> <065CBEA1-1647-4233-BBB6-48E879FD91B0@gmail.com> <20100927175418.162ee906@dick.coachhouse> <5F1C28C4D61848D6A012C5DD84B22226@marktestcr.marktest.pt> Reply-To: "Tarlika Elisabeth Schmitz" X-Mailer: Claws Mail 3.5.0 (GTK+ 2.12.12; i486-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-0.879 tagged_above=-5 required=5 tests=BAYES_00=-1.9, MISSING_HEADERS=1.021 X-Spam-Level: X-Archive-Number: 201009/111 X-Sequence-Number: 34642 On Tue, 28 Sep 2010 11:34:31 +0100 "Oliveiros d'Azevedo Cristina" wrote: >----- Original Message ----- >From: "Tarlika Elisabeth Schmitz" >To: >Sent: Monday, September 27, 2010 5:54 PM >Subject: Re: [SQL] identifying duplicates in table with redundancies > > >> On Fri, 24 Sep 2010 18:12:18 +0100 >> Oliver d'Azevedo Christina wrote: >> >>>>> SELECT DISTINCT trainer_id,trainer_name >>>>> FROM ( >>>>> SELECT trainer_name -- The field you want to test for duplicates >>>>> FROM ( >>>>> SELECT DISTINCT "trainer_id","trainer_name" >>>>> FROM student >>>>> ) x >>>>> GROUP BY "trainer_name" -- the field you want to test for >>>>> duplicates >>>>> HAVING (COUNT(*) > 1) >>>>> ) z >>>>> NATURAL JOIN student y >> >> >> >> What indices would you recommend for this operation? > >But, on this query in particular I would recomend an indice on >trainer_name, as this field will be used on the join and on the group >by. For the other query, the one you get by substituting trainer_name >by trainer_id, place an index on trainer_id. >Also, these indexes may help speed up the order by clause, if you use >one. > >If you have a table with lots of data you can try them around and see >how performance varies (and don't forget there's also EXPLAIN ANALYZE) Strangely, these indices did not do anything. Without, the query took about 8500ms. Same with index. The table has 250000 records. 11000 have trainer_name = null. Only 13000 unique trainer_names. It is not hugely important as these queries are not time-critical. This is only a helper table, which I use to analyze the date prior to populating the destination tables with the data. Regards, Tarlika