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




MySQL.RU - Webboard



Вернуться
Можно ли оптимизировать запрос? (Виталий) 04/11/2010 - 16:37:43
      Re: Можно ли оптимизировать запрос? (Юрий) 11/11/2010 - 15:11:43
      Re: Можно ли оптимизировать запрос? (Елена) 14/11/2010 - 02:15:48

> Original message text:
> From: Виталий - 04/11/2010 - 16:37:43
> Subject:Можно ли оптимизировать запрос?
> -----------------
> Есть медленный запрос такого типа:
>
> DELETE FROM smsdelivery WHERE smsid IN (SELECT smsid FROM sms WHERE phonenumber='S' OR fromuser='S' OR touser='S');
>
> explain:
>
> select_type: SIMPLE
> table: SMS
> type: index_merge
> possible_keys: phoneNumber,fromUser,toUser
> key: phoneNumber,fromUser,toUser
> key_len: 767,51,51
> ref: NULL
> rows: 3
> Extra: Using union(phoneNumber,fromUser,toUser); Using where
>
> В таблице sms есть индексы phonenumber,fromuser и touser, но они не используются - что, впрочем, понятно.
> Можно ли как-то оптимизировать запрос? Или разбить его на три отдельных?
>


From: Елена - 14/11/2010 - 02:15:48
Subject:Можно ли оптимизировать запрос?
-----------------
> В таблице sms есть индексы phonenumber,fromuser и touser, но они не используются - что, впрочем, понятно.

Почему не используются. Используются!
Но их длина key_len: 767,51,51 несколько смущает.
MYSQL медленно удаляет и, на мой взгляд, медленно работает с текстовыми ключами.
Но smsdelivery обрабатывается полностью (можно сделать explain, дабы убедиться в этом). LEFT JOIN здесь не нужен.

Лучше так:

DELETE msdelivery FROM msdelivery as a,sms as b on(a.smsid=b.smsid) WHERE b.phonenumber='S' OR b.fromuser='S' OR b.touser='S';


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

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

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



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