|
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,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
37688
|
|