Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Как можно оптимизировать этот запрос? (Balancer) 10/07/2005 - 23:45:01
      Re: Как можно оптимизировать этот запрос? (Dinky) 11/07/2005 - 06:07:55
      Re: Как можно оптимизировать этот запрос? (Balancer) 11/07/2005 - 08:51:11
      Re: Как можно оптимизировать этот запрос? (Валентин) 11/07/2005 - 15:14:50
      Re: Еще вариант (Валентин) 11/07/2005 - 15:16:39
      Re: Как можно оптимизировать этот запрос? (Balancer) 11/07/2005 - 19:41:23
      Re: Как можно оптимизировать этот запрос? (Валентин) 12/07/2005 - 12:45:03

> Original message text:
> From: Balancer - 10/07/2005 - 23:45:01
> Subject:Как можно оптимизировать этот запрос?
> -----------------
> MySQL 4.1.x
>
> Есть две простых таблицы в два столбца, id и value. Идентификатор страницы и нужное значение. Таблицы больше, по 500+ тыс. записей. Индивидуальная выборка по любой из них занимает долю секунды. Но требуется выбрать строки по заданными id и value из первой таблицы и отсортировать по соответствующим строкам по value второй таблицы. Т.е.:
>
> SELECT c.value as tid, m.value as modify FROM hts_data_childs c LEFT JOIN hts_data_modify_times m ON (c.value = m.id) WHERE c.id LIKE 'http://forums.airbase.ru/forum3/' AND c.value LIKE 'http://forums.airbase.ru/topic%' ORDER BY m.value DESC LIMIT 3750, 25;
>
> Время выборки - 1.5 сек. ИМХО, могло бы быть заметно быстрее. Есть у кого-нибудь мысли по поводу ускорения? На все поля таблиц индексы есть. Explain:
>
> +----+-------------+-------+--------+------------------+---------+---------+-------------+------+----------------------------------------------+
> | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
> +----+-------------+-------+--------+------------------+---------+---------+-------------+------+----------------------------------------------+
> | 1 | SIMPLE | c | range | PRIMARY,id,value | id | 765 | NULL | 3147 | Using where; Using temporary; Using filesort |
> | 1 | SIMPLE | m | eq_ref | PRIMARY,id | PRIMARY | 765 | HTS.c.value | 1 | |
> +----+-------------+-------+--------+------------------+---------+---------+-------------+------+----------------------------------------------+
>
> От наличия сортировки время выборки не зависит. Если выбирать по тем же LIKE из одной только таблицы без JOIN'а второй - то выборка проходит за 0.1 сек.
>
> Где крутить? Полторы секунды это ещё терпимо, но уже на грани. А что будет, когда записей станет миллион? Два миллиона?
>


From: Валентин - 11/07/2005 - 15:16:39
Subject:Еще вариант
-----------------
Еще можно написать так:
большую таблицу сделать derived в запросе, т.е. сделать ее вложенной таблицей, а на внешнем where отработать ее относительно маленькой.
Вобщем нужно смотреть, покрутить запрос и использование индексов.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
22990



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |