Re: SELECT Performance and INDEXing

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

 



I think no one answered it because it doesn't make a whole lot of sense. 
Breaking a condition out into a second SQL statement would force the DB to 
rescan the table, so it should take longer rather than shorter. There's 
nothing suggesting that it's doing an internal self-join or other 
time-consuming function off the bat, which might explain it. 

Granted a second query would benefit from caching from the first to some 
degree. 

Can you run EXPLAIN on the first statement and post the results?

-Micah 

On Thursday 18 August 2005 1:02 pm, Dwight Altman wrote:
> Hey, this is my first question.  So if you could just reply to say it
> reached the php-db list, that would be terrific.  Of course, answering the
> questions would be awesome as well.
>
> > I meant
> > 'Analyze table'
> > and
> > 'the composite key "field2 field3" would be unique'
> >
> > ----- Original Message -----
> > From: "Dwight Altman" <dwight@xxxxxxxxxxxx>
> > To: <php-db@xxxxxxxxxxxxx>
> > Sent: Wednesday, August 10, 2005 4:23 PM
> > Subject:  SELECT Performance and INDEXing
> >
> >
> > I have a MyISAM table holding images with field types bigint(20),
> > mediumblob, varchar(255), blob and tinyint(3).  The table has grown to
> > over
> > 800 MB and over 6,000 rows.  In the past week, performance has been about
> > 15-20 seconds to run the following select statement which pulls only 16
> > maximum rows:
> >
> > SQL1) SELECT field1, field2, andUpToField10 FROM theTable WHERE field2 =
> > $aField2Value OR field1 = 1 OR field1 = 2 ORDER BY field1 ASC
> >
> > Basically I always pull the first 2 images in the table via the primary
> > key
> > field1 and upto 14 additional images depending on a foreign key field2.
> > field2 can have up to 14 repeated/duplicate entries.
> >
> > My working solution is that I have since split this into 2 select
> > statements:
> > SQL2) SELECT field1, field2, andUptoField10 FROM theTable WHERE field1 =
> > 1 OR field1 = 2 ORDER BY field1 ASC
> > SQL3) SELECT field1, field2, andUptoField10 FROM theTable WHERE field2 =
> > $aField2Value ORDER BY field1 ASC
> > and performance is back to "instantaneous" (as far as web responsiveness
> > is
> > concerned).
> >
> > Can someone explain why SQL1 took so long to run as compared with running
> > SQL2 and SQL3 ?
> >
> > Before splitting the statements, I also tried from phpmyadmin (Check
> > table,
> > Aalyze table, Optimize table) and creating an INDEX on field2, but I
> > noticed
> > no performance increase.  Before explicitly adding an INDEX, the space
> > usage
> > in phpmyadmin already showed Type:Index using several bytes.  The table
> > still has the INDEX I explicitly created.
> >
> > Can someone explain to me INDEXing ?  I was thinking of field2 and field3
> > for an INDEX (since field3 holds a number from 1 - 14 and the composite
> > key
> > "field1 field2" would be unique), but I seem to be home free already.  I
> > would just like to know "why" performance slowed and then "why" it
> > improved
> > with my solution.
> >
> > Regards.
> >
> > --

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux