Re: Slooooow query in MySQL.
| From: | Chris | Date: | Mon, 23 Jul 2007 03:01:30 +0000 |
| Subject: | Re: Slooooow query in MySQL. | ||
| References: | 1 2 3 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-43842@lists.php.net to get a copy of this message | ||
Stut wrote:
Chris wrote:Actually it can. I don't think mysql does this but postgresql does take the limit/offset clauses into account when generating a plan. http://www.postgresql.org/docs/current/static/sql-select.html#SQL-LIMIT Not really relevant to the problem though :P -- Postgresql & php tutorials http://www.designmagick.com/Rob Adams wrote:If that were the case I wouldn't expect limiting the number of rows returned to make a difference since the actual query is the same.I have a query that I run using mysql that returns about 60,000 plus rows. It's been so large that I've just been testing it with a limit 0, 10000 (ten thousand) on the query. That used to take about 10 minutes to run, including processing time in PHP which spits out xml from the query. I decided to chunk the query down into 1,000 row increments, and tried that. The script processed 10,000 rows in 23 seconds! I was amazed! But unfortunately it takes quite a bit longer than 6*23 to process the 60,000 rows that way (1,000 at a time). It takes almost 8 minutes. I can't figure out why it takes so long, or how to make it faster. The data for 60,000 rows is about 120mb, so I would prefer not to use a temporary table. Any other suggestions? This is probably more a db issue than a php issue, but I thought I'd try here first.Sounds like missing indexes or something. Use explain: http://dev.mysql.com/doc/refman/4.1/en/explain.html