Нагрузка на БД при поиске @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 13 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
mnemonic
новый человек
0
Сообщения: 55
Зарегистрирован: 15.02.05
Откуда: как все, из утробы
Заголовок сообщения: Нагрузка на БД при поиске
Сообщение Добавлено: 30 Август 2005, 10:10:38 
Есть таблица с 15 полями. Необходимо выполнить поиск всех записей таблицы, в которых встречается хотя бы одно из слов заданной фразы.

Есть вариант сделать поиск с запросом вида:

select `id`, `firmname` from test where ((`firmname` like "%blah2%") or (`contactperson` like "%blah2%") or (`phone` like "%blah2%") or(`fax` like "%blah2%") or(`email` like "%blah2%") or (`businessdirection` like "%blah2%") or(`projects` like "%blah2%") or(`servicegoods` like "%blah2%") or(`biography` like "%blah2%") or (`about` like "%blah2%") or (`anotherinfo` like "%blah2%")) and ((`firmname` like "%blah2%") or (`contactperson` like "%blah2%") or (`phone` like "%blah2%") or(`fax` like "%blah2%") or(`email` like "%blah2%") or (`businessdirection` like "%blah2%") or(`projects` like "%blah2%") or(`servicegoods` like "%blah2%") or(`biography` like "%blah2%") or (`about` like "%blah2%") or (`anotherinfo` like "%blah2%")) and ((`firmname` like "%blah2%") or (`contactperson` like "%blah2%") or (`phone` like "%blah2%") or(`fax` like "%blah2%") or(`email` like "%blah2%") or (`businessdirection` like "%blah2%") or(`projects` like "%blah2%") or(`servicegoods` like "%blah2%") or(`biography` like "%blah2%") or (`about` like "%blah2%") or (`anotherinfo` like "%blah2%")) and ((`firmname` like "%blah3%") or (`contactperson` like "%blah3%") or (`phone` like "%blah3%") or(`fax` like "%blah3%") or(`email` like "%blah3%") or (`businessdirection` like "%blah3%") or(`projects` like "%blah3%") or(`servicegoods` like "%blah3%") or(`biography` like "%blah3%") or (`about` like "%blah3%") or (`anotherinfo` like "%blah3%"))


/Это запрос "ИЛИ", возможен и вариант с AND, когда ищем совпадения обоих слов, т.е. по "И"/

и другой вариант:

select `id`, `firmname` from test where ((`firmname` like "%blah2%blah3%")

В первом случае мы выполняем поиск всевозможных вариантов, но по моему мнению очень высока нагрузка на БД в случае даже двух слов в фразе. Не говоря уже про три слова и выше.

Во втором случае мы ищем только прямой порядок слов и запрос получается по "И".

Интересно узнать мнение тех, кто уже реализовывал подобные задачки, чем лучше поступиться - производительностью или гибкостью поиска (допустим что все поля поиска проиндексированы/не проиндексированы).

Можно отослать к умным статьям.

_________________
http://sale.qpl.ru - профессиональная доска объявлений
Бaзиль Муж.
участник
49
Сообщения: 1288
Зарегистрирован: 13.02.05
Откуда: Околомосковье
Сообщение Добавлено: 30 Август 2005, 11:30:28 
Надеюсь, это MySQL?

Гораздо быстрее будет использовать оператор UNION, объединяющий два запроса. Как пример - вот: http://dev.mysql.com/doc/mysql/en/searching-on-two-keys.html

_________________
Не кочегары мы, не плотники,
Но сожалений горьких нет -
Как нет?
А мы дизайнеры-художники,
И с высоты вам шлем привет -
Привет!
abraitcev
новый человек
6
Сообщения: 165
Зарегистрирован: 28.09.02
Откуда: Murmansk
Сообщение Добавлено: 30 Август 2005, 14:15:37 
http://dev.mysql.com/doc/mysql/en/fulltext-search.html
mnemonic
новый человек
0
Сообщения: 55
Зарегистрирован: 15.02.05
Откуда: как все, из утробы
Сообщение Добавлено: 30 Август 2005, 17:10:32 
abraitcev, many thanx

_________________
http://sale.qpl.ru - профессиональная доска объявлений
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 30 Август 2005, 17:16:18 
fultext удобен но дико тормозюч

_________________
можно на ТЫ.
Acid~Jazz Муж.
соучастник
1
Сообщения: 740
Зарегистрирован: 12.04.03
Откуда: Зеленоград
Сообщение Добавлено: 30 Август 2005, 23:08:01 
fulltext нормально, есть же индексация по нему

_________________
начинающий менеджер . http://acidjazz.photosight.ru/
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 30 Август 2005, 23:15:21 

bE(o0L писал(а):
fultext удобен но дико тормозюч



Да куда ж хуже, чем полный table scan, который порождается этим запросом?
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 30 Август 2005, 23:45:32 
Crazy, с полным table scan по тормознутости fulltext не сравнится

_________________
можно на ТЫ.
mnemonic
новый человек
0
Сообщения: 55
Зарегистрирован: 15.02.05
Откуда: как все, из утробы
Сообщение Добавлено: 31 Август 2005, 09:58:07 
http://www.netbynet.ru/forum/viewtopic.php?p=21305

там же есть ссылка на статью.

_________________
http://sale.qpl.ru - профессиональная доска объявлений
Acid~Jazz Муж.
соучастник
1
Сообщения: 740
Зарегистрирован: 12.04.03
Откуда: Зеленоград
Сообщение Добавлено: 31 Август 2005, 19:53:20 

bE(o0L писал(а):
Crazy, с полным table scan по тормознутости fulltext не сравнится



побойтесь Бога :), зачем же тогда этот fulltext и индексы для него придумали вообще?

_________________
начинающий менеджер . http://acidjazz.photosight.ru/
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 31 Август 2005, 21:32:51 
Acid~Jazz, всмысле? table scan тормознутей. я признаю это. К чему твой пост?

_________________
можно на ТЫ.
Acid~Jazz Муж.
соучастник
1
Сообщения: 740
Зарегистрирован: 12.04.03
Откуда: Зеленоград
Сообщение Добавлено: 1 Сентябрь 2005, 13:04:59 
bE(o0L, а ну тогда сорри. Просто фразу твою можно двояко понимать.

_________________
начинающий менеджер . http://acidjazz.photosight.ru/
GreatWeb Муж.
новый человек
21
Сообщения: 103
Зарегистрирован: 09.01.03
Откуда: Perm
Сообщение Добавлено: 5 Сентябрь 2005, 18:06:48 

Цитата:
fultext удобен но дико тормозюч


Это завит от структуры таблицы. Если грамотно сделать (что давольно легко... для меня по крайней мере), то поиск (MATCH … AGAINST) будет оочень шустрый!
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 13 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100