Re: [PHP] Query takes much to long, is there a work around?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Found it,

I now use

SELECT adreslog.adres,adreslog.totalread
,sum(case when linkcode='1012' AND linklog.adrescode=adreslog.alogid then 1
else 0 end ) as Homepage
,sum(case when linkcode='1234' AND linklog.adrescode=adreslog.alogid then 1
else 0 end ) as Mickey

FROM adreslog left join linklog on (adreslog.alogid = linklog.adrescode)

WHERE adreslog.mailcode='24120256'
group by adreslog.adres,adreslog.totalread;

Your comment about joining the tables helped.

Thanks !! 


Kind regards,
Toon van Doorn
 

-----Oorspronkelijk bericht-----
Van: pgsql-php-owner@xxxxxxxxxxxxxx [mailto:pgsql-php-owner@xxxxxxxxxxxxxx]
Namens Frank Bax
Verzonden: dinsdag 4 oktober 2005 14:19
Aan: pgsql-php@xxxxxxxxxxxxxx
Onderwerp: Re: [PHP] Query takes much to long, is there a work around?

At 07:55 AM 10/4/05, Toon van Doorn wrote:
>Is there a faster way of selecting the hits on a link per adres?


This type of question (slow query) is usually asked on pgsql-sql list, it
has nothing to do with php.

You didn't mention indexes - surely you have indexes on your tables?

Check the output of "EXPLAIN ANALYSE" for one of your "select count ..." 
subqueries.

I think your query will benefit from a multi-column index on ( mailcode,
linkcode, adrescode ), but 16 subselects and 51 rows in adreslog means over
800 subqueries being executed - that's a lot of work to do!!

What happens if you change
SELECT count(linkcode) FROM linklog WHERE linklog.mailcode='24120256' AND
linkcode='1012' AND linklog.adrescode=adreslog.alogid) as Homepage to
somthing like:
SELECT adrescode, mailcode, count(linkcode) FROM linklog WHERE
mailcode='24120256' AND linkcode='1012' as Homepage

then join to adreslog table.


---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq


---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

[Index of Archives]     [Postgresql General]     [Postgresql Admin]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Yosemite Backpacking]     [Postgresql Jobs]

  Powered by Linux