Re: Speed Opinion
| From: | Robert Cummings | Date: | Wed, 04 Feb 2009 22:55:47 +0000 |
| Subject: | Re: Speed Opinion | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-287667@lists.php.net to get a copy of this message | ||
On Wed, 2009-02-04 at 14:42 -0800, PHP wrote:
> Hi all,
> I am seeking some knowledge, hopefully I explain this right.
>
> I am wondering what you think is faster.
>
> Say you have 1000 records from 2 different tables that you need to get from a MySQL database.
> A simple table will be displayed for each record, the second table contains related info for
> each record in table 1.
>
> Is if faster to just read all the records from both tables into two arrays, then use php to go
> through the array for table 1 and figure out what records from table 2 are related.
>
> Or, you dump all the data in table 1 into an array, then as you go through each record you make
> a database query to table 2.
>
>
>
>
> PS:
> I know I can use a join, but I find anytime I use a join, the database query is extremely slow,
> I have tried it for each version of mysql and php for the last few years. The delay difference is in
> the order of 100x slower or more.
Grab records from table 1... build a list of IDs to match in table 2.
Use an IN clause. 2 queries and no joins as you requested.
SELECT * from foo_table AS FOO where "something something";
SELECT * from fee_table AS FEE where foo_id IN ( list, of, ids );
You REALLY don't want to do a query for every row matched in the first
query.
Cheers,
Rob.
--
http://www.interjinn.com
Application and Templating Framework for PHP