Ok here is the EXPLAIN query:

table, type, possible_keys, key, key_len, ref, rows, Extra
Employers, ALL, NULL, NULL, NULL, NULL, 46175, where used; Using temporary;
Using filesort 
Jobs, ref, EmpID, EmpID, 4, Employers.EmpID, 3, where used
JobsLocation, ref, PRIMARY, PRIMARY, 4, Jobs.JobID, 581, Using index
Location, eq_ref, LocID, LocID, 2, JobsLocation.LocID, 1, where used
JobsCategory, ref, PRIMARY, PRIMARY, 4, Jobs.JobID, 581, Using index;
Distinct 
Category, eq_ref, PRIMARY,CatID, PRIMARY, 1, JobsCategory.CatID, 1, where
used; Using index; Distinct

Hopefully you can make out what it says in all of that jumble! :)

Thanks so much for everyone's help!

I am using PHP by the way.. And the reason those things that do not have to
be quoted are.. Is.. Well.. Just because I quote everything, less likely to
run into errors, but if it would speed things up.. By all means I will take
them out! yes?

Cheers!

Rick

"When the solution is simple, God is answering." - Albert Einstein


> From: Tod Harter <[EMAIL PROTECTED]>
> Organization: Giant Electronic Brain
> Date: Wed, 31 Jul 2002 09:57:20 -0400
> To: Richard Baskett <[EMAIL PROTECTED]>, MySQL <[EMAIL PROTECTED]>
> Subject: Re: Speed issues...
> 
> On Wednesday 31 July 2002 05:17 am, Richard Baskett wrote:
>> This is my first post here.. So be nice! ;)
> 
> OK, no flames ;o).
> 
> I'd want a bit more information in order to really diagnose this. The first
> thing I would tell you to do is to EXPLAIN this query. To do that just tack
> the keyword EXPLAIN onto the beginning of it, this will return you an
> explanation of what MySQL's query optimizer has decided to do with the query.
> Most likely one or more of your tables are being joined on columns with no
> indexes. Generally all the columns mentioned in USING should be indexed. You
> might also experiment with indexing of the LocName and JobTitle columns.
> 
> Beyond that there are many possibilities. Your table structure is obviously
> fairly elaborate, and I suspect fully normalized. You might be forced to
> denormalize it some, in other words maybe the stuff in tables like "Location"
> will just have to be merged into the parent table even though it means
> possibly some duplication of data (but I suspect that at the level of
> actually managing your data you probably duplicate it in the child table
> already anyhow...).  Denormalization can reduce the numbers of joins enough
> to possibly get you a speed improvement.
> 
> BTW, why is the 1 in ... VALID = '1' ... quoted? If its an integer then get
> rid of the quotes, same for CatID IN ('2'), your just forcing the database
> engine to do conversions. If, as I suspect, you are using Perl DBI then try
> using bind parameters and explicitly setting the SQL_TYPE. Perl DBI is pretty
> dumb about figuring out what data types to use.
> 
>> 
>> I have a database with a little over 60,000 records and when I do a search
>> on that db it takes a little over a minute and a half to return results.
>> This is very unacceptable, but Im just not sure what I can do to remedy
>> this.  Here is what the query looks like when just using location and
>> category in the search..
>> 
>> SELECT DISTINCT Location.SortID AS Loc, LocName, JobTitle AS Job, Company
>> AS Comp, Jobs.JobID, Employers.EmpID
>> FROM Employers
>> LEFT JOIN Jobs USING (EmpID)
>> LEFT JOIN JobsLocation USING (JobID)
>> LEFT JOIN Location USING (LocID)
>> LEFT JOIN JobsCategory ON Jobs.JobID=JobsCategory.JobID
>> LEFT JOIN Category USING (CatID)
>> WHERE Valid = '1' AND JobTitle IS NOT NULL
>> AND (LocName LIKE 'US-Alabama-Birmingham%')
>> AND Category.CatID IN ('2')
>> ORDER BY Loc ASC LIMIT 0,50
>> 
>> Add on the following when using keywords in the search, these are the jobs
>> to search in since these had the keywords within them:
>> 
>> AND Jobs.JobID IN ('2345','6578')
>> 
>> Like I said it's taking between 45-100 seconds to execute these queries and
>> that's just not acceptable.  I was told to use another table that would
>> save the query, save a timestamp, and save the results.  Then whenever that
>> same query came up just show the stored results.  While this is a
>> possibility, I see the likelihood of people doing the exact same search as
>> very slim.  So hopefully there is a better way of doing my query.. Or if
>> there is something I can tell my host to do with mysql or the hardware that
>> it's on... Im desperate.. Anything that can speed things up will be
>> appreciated!
>> 
>> Cheers!
>> 
>> Rick
>> 
>> "The intuitive mind is a sacred gift and the rational mind is a faithful
>> servant.  We have created a society that honors the servant and has
>> forgotten the gift." - Albert Einstein
>> 
>> 
>> ---------------------------------------------------------------------
>> Before posting, please check:
>>    http://www.mysql.com/manual.php   (the manual)
>>    http://lists.mysql.com/           (the list archive)
>> 
>> To request this thread, e-mail <[EMAIL PROTECTED]>
>> To unsubscribe, e-mail
>> <[EMAIL PROTECTED]> Trouble
>> unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
> 
> ---------------------------------------------------------------------
> Before posting, please check:
>  http://www.mysql.com/manual.php   (the manual)
>  http://lists.mysql.com/           (the list archive)
> 
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail
> <[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
> 
> 
> 


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to