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




MySQL.RU - Webboard



Вернуться
Оптимизация LIKE "%pattern%" (Andy) 05/02/2007 - 16:49:47
      Re: Оптимизация LIKE (Nick) 06/02/2007 - 10:01:22



From: Andy - 05/02/2007 - 16:49:47
Subject:Оптимизация LIKE "%pattern%"
-----------------
Собссна запрос -
SELECT
d.*, u.login
FROM
users u
INNER JOIN userDetails d ON d.userId=u.id
LEFT JOIN ut_userTypes ut ON ut.id=u.utype
LEFT JOIN item2tags i2t ON u.id = i2t.userId AND i2t.itemType=14
LEFT JOIN itemTags it ON i2t.tagId = it.id AND it.itemType=14
WHERE
(d.about LIKE "%qwe%" OR d.firstName LIKE "%qwe%" OR d.lastName LIKE "%qwe%" OR d.peopleLikeToMeet LIKE "%qwe%" OR d.prefferedEmail LIKE "%qwe%" OR
d.AIM LIKE "%qwe%" OR d.MSN LIKE "%qwe%" OR d.sqype LIKE "%qwe%" OR d.jabber LIKE "%qwe%" OR d.mailAddress LIKE "%qwe%" OR d.city LIKE "%qwe%" OR
d.body_description LIKE "%qwe%" OR d.interests LIKE "%qwe%" OR d.headline LIKE "%qwe%" OR d.officialWebsite LIKE "%qwe%" OR
d.p_aimnick LIKE "%qwe%" OR d.p_address LIKE "%qwe%" OR d.p_city LIKE "%qwe%" OR d.favoriteMusic LIKE "%qwe%" OR d.favoriteBooks LIKE "%qwe%" OR
d.favoriteMovies LIKE "%qwe%" OR d.favoriteActors LIKE "%qwe%" OR d.favoriteTvShows LIKE "%qwe%" OR d.fav_food LIKE "%qwe%" OR
d.favorite_locations LIKE "%qwe%" OR d.website LIKE "%qwe%" OR d.p_website LIKE "%qwe%" OR it.tag LIKE "%qwe%")
GROUP BY
u.id
ORDER BY
u.lastAccessTime DESC

Интересует следующее - каким образом можно избавиться от "бесконечных" LIKE'ов в вышеприведенном запросе? На текущий момент этот запрос отрабатывает за 11 секунд на таблице userDetails в ~40к записей.
EXPLAIN говорит, что для таблицы userDetails индексы не используются (что в принципе и следовало ожидать).

Возможно, выходом из положения будет временная таблица?

Заранее благодарен.


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

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

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



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