SELECT
messages.*, users.name
FROM
messages
INNER JOIN
users
WHERE
messages.sid=users.id
AND
rid='1'
AND
( status='0' OR status='1' OR status='3' )
AND
( users.name LIKE '%adasd%' OR messages.text LIKE '%adasd%' OR users.name LIKE '%%' OR messages.text LIKE '%%' OR users.name LIKE '%ads%' OR messages.text LIKE '%ads%' OR users.name LIKE '%sf%' OR messages.text LIKE '%sf%' OR users.name LIKE '%adf%' OR messages.text LIKE '%adf%' OR users.name LIKE '%asd%' OR messages.text LIKE '%asd%' OR users.name LIKE '%фвфыв%' OR messages.text LIKE '%фвфыв%' OR users.name LIKE '%%' OR messages.text LIKE '%%' OR users.name LIKE '%фвы%' OR messages.text LIKE '%фвы%' OR users.name LIKE '%ыа%' OR messages.text LIKE '%ыа%' OR users.name LIKE '%фва%' OR messages.text LIKE '%фва%' OR users.name LIKE '%фыв%' OR messages.text LIKE '%фыв%' )
ORDER BY id DESC LIMIT 100000
Спустя 10 минут, 16 секунд (13.02.2011 - 01:08) Arni написал(а):
Страшный запрос, что тут сказать. Наверно стоит описать чего вы хотите добиться этим запросом. Понятно что идет поиск пользователя по определенным критериям. Но может быть если описать подробнее то было бы можна и подумать.
Как варианты предлагаю.
1. Расставить грамотно индексы.
2. Попробовать разбить на два запроса. Бывает что два запроса будут работать быстрее нежели последствия при объединении таблиц.
Как варианты предлагаю.
1. Расставить грамотно индексы.
2. Попробовать разбить на два запроса. Бывает что два запроса будут работать быстрее нежели последствия при объединении таблиц.
Спустя 13 минут, 39 секунд (13.02.2011 - 01:22) Гость_Дима написал(а):
Собственно есть 2 таблицы users, messages
организовываю поиск, допустим пишу запрос "Пупкин Илья"
соединяю 2 таблицы, из users беру только users.name и присваиваю это имя id в messages (messages.sid=users.id)
и теперь хочу найти в этом запросе WHERE name LIKE '%ПУПКИН%' OR name LIKE '%ИЛЬЯ%' OR messages.text LIKE '%ПУПКИН%' и так далее )
организовываю поиск, допустим пишу запрос "Пупкин Илья"
соединяю 2 таблицы, из users беру только users.name и присваиваю это имя id в messages (messages.sid=users.id)
и теперь хочу найти в этом запросе WHERE name LIKE '%ПУПКИН%' OR name LIKE '%ИЛЬЯ%' OR messages.text LIKE '%ПУПКИН%' и так далее )
Спустя 10 минут, 44 секунды (13.02.2011 - 01:32) Arni написал(а):
Если я правильно понимаю, идет поиск матереалов где встречается имя человека?
Спустя 8 минут, 40 секунд (13.02.2011 - 01:41) Guest написал(а):
не обязательно имя человека а любой запрос, поиск происход и в тексте и в имени автора
messages.text
users.name
запрос может выглядить как угодно хоть "ла тра пум ка Петя" и нужно вывести все где в тексте и в именя встречается любая комбинация слово\часть слова
messages.text
users.name
запрос может выглядить как угодно хоть "ла тра пум ка Петя" и нужно вывести все где в тексте и в именя встречается любая комбинация слово\часть слова
Спустя 38 минут, 14 секунд (13.02.2011 - 02:19) Guest написал(а):
в общем обычный поиск набора слов в таблице
Спустя 1 час, 44 минуты, 19 секунд (13.02.2011 - 04:03) waldicom написал(а):
Может тогда использовать полнотекстовый поиск?
MySQL FULLTEXT
MySQL FULLTEXT
Спустя 9 часов, 9 минут, 20 секунд (13.02.2011 - 13:13) Guest написал(а):
Да так гораздо лучше, спасибо! ) Что вы еще посоветуете почитать полезного про mysql )