Afficher un message
Vieux 04/10/2007, 15h58   #2
Captain Paralytic
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Speeding up large query

On 4 Oct, 14:11, nk <nkoell...@gmail.com> wrote:
> I have two tables with approximately 5 mio rows each, on which I'm
> trying to execute the following query:
>
>
Code:
SELECT field1
>         FROM main_table USE INDEX (sort_field)
>         LEFT JOIN second_table l USING (primary_key_field)
>         WHERE l.field2 = "abcde"
>         ORDER BY sort_field ASC LIMIT 5000, 3000
>
> I already optimized the query by adding "USE INDEX (sort_field)" to
> avoid temporary tables for sorting, but when I execute it, it still
> locks the table for around 10 minutes. In the process list the state
> of the query is 'Sending data', but I doubt that the data transfer is
> actually what takes so long, since both servers have a pretty fast
> connection.
>
> Any ideas what I could change to speed this query up? I assume the
> biggest problem right now is the WHERE condition, since it doesn't use
> an index, but I don't know how I could fix that without losing the
> index on sort_field.


Well,
since your where clause operates on field2 of second_table, could you
swap the tables round and use an index on field2 to limit the rows to
be operated on?

As it is, all the rows in main_table have to be read, a JOIN attempted
into second_table and, if the JOIN is successful, field2 must be
examined.

  Réponse avec citation
 
Page generated in 0,04700 seconds with 9 queries