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




MySQL.RU - Webboard



Вернуться
Очень медленно работает запрос с подзапросом (seyfer) 11/12/2011 - 13:14:08
      Re: Очень медленно работает запрос с подзапросом (Akina) 11/12/2011 - 20:50:48
      Re: Очень медленно работает запрос с подзапросом (seyfer) 12/12/2011 - 05:57:15
      Re: Очень медленно работает запрос с подзапросом (seyfer) 12/12/2011 - 06:05:04
      Re: Очень медленно работает запрос с подзапросом (seyfer) 12/12/2011 - 06:54:28
      Re: Очень медленно работает запрос с подзапросом (seyfer) 12/12/2011 - 06:55:22

> Original message text:
> From: seyfer - 11/12/2011 - 13:14:08
> Subject:Очень медленно работает запрос с подзапросом
> -----------------
> Добрый день.
>
> Ситуация такая. Во первых мы имеем дело с большой таблицей debtors 3000-5000 записей. Мне нужно выбрать из этой таблицы записи только те, которые не входят в записи, получаемые другим запросом.
>
> Сам запрос
>
>
> $obz_query =
> "SELECT debtors.*, FROM_UNIXTIME(block_start_date) AS date
> FROM debtors
> WHERE users_id NOT IN(SELECT users_id FROM debtors, complete, notes
> WHERE block_start_date < compl_date AND compl_note = note_id
> AND n_abon_id = users_id AND is_juridical = 0)
> AND is_juridical = 0
> ORDER BY {$_SESSION['sort']} {$sort_by}
> LIMIT $start, $num";
>
>
>
> Complete - база с обработанными debtors.
> Notes - заметки к debtors.
>
> Соответственно через notes идет связь между Complete и Notes по compl_note = note_id AND n_abon_id = users_id.
> Сейчас в Complete и Notes по 500 записей но они будут расти до 10000 и больше.
>
> Нагрузка на сервер получается дикая.
>
> Как-то можно иначе составить запрос?
>


From: seyfer - 12/12/2011 - 06:05:04
Subject:Очень медленно работает запрос с подзапросом
-----------------
Вот так выглядит без PHP


SELECT debtors . * , FROM_UNIXTIME( block_start_date ) AS DATE
FROM debtors
WHERE users_id NOT
IN (

SELECT users_id
FROM debtors, complete, notes
WHERE block_start_date < compl_date
AND compl_note = note_id
AND n_abon_id = users_id
AND is_juridical =0
)
AND is_juridical =0
ORDER BY DATE DESC
LIMIT 0 , 20




Я что-то не пойму логику с Join как сделать...

Полного

id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY debtors ALL NULL NULL NULL NULL 3706 Using where; Using filesort
2 DEPENDENT SUBQUERY debtors ref users_id users_id 4 func 1 Using where
2 DEPENDENT SUBQUERY complete ALL NULL NULL NULL NULL 93 Using where; Using join buffer
2 DEPENDENT SUBQUERY notes eq_ref PRIMARY PRIMARY 4 rightside_debt.complete.compl_note 1 Using where

Подзапроса

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE complete ALL NULL NULL NULL NULL 93
1 SIMPLE notes eq_ref PRIMARY PRIMARY 4 rightside_debt.complete.compl_note 1
1 SIMPLE debtors ref users_id users_id 4 rightside_debt.notes.n_abon_id 1 Using where


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

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

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



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