![]() |
|
Модераторы: LSD |
![]()
|
|
| Greendrake |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 364 Регистрация: 14.7.2005 Репутация: нет Всего: 6 |
Сейчас сайт работает на MySQL 4.1.x
Активно используется поиск по таблице, в которой сейчас под 3 миллиона записей (дальше будет больше ещё на несколько миллионов). Собственно поиск идёт по трём строковым полям (длиной не более 100 символов каждое). Для ускорения использую индекс FULLTEXT - на эти три поля. Всё бы ничего, но ищет он только слова целиком. Чтобы найти что-то по части слова, приходится использовать оператор LIKE, и такой поиск растягивается порой на десятки секунд (слова целиком по индексу FULLTEXT находит практически моментально). Требуется ускорить поиск по частям слова (по вхождению). Апгрейд железа, думаю, ну сократит с 20 секунд до 10-5, но это не то. Должно быть какое-то чисто софтовое решение, типа того же FULLTEXT, но чтобы искал по вхождению. В каких базах такое есть? Желательно бесплатных, и легких для прикрутки к PHP-сайту. Может, уже в 5-й версии MySQL такое есть? Может, в PostgreSQL? |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Ни одна база данных не будет быстро искать по частям слова в средине строки, так как невозможно при таком поиске использовать индексы. Любая база данных такой поиск будет осуществлять путём физического перебора записей. У вас есть варианты -
1) наращивать железо 2) думать над архитектурой... Вплодь до создания специальных полей или таблиц для поиска, но такого при котором не нужен был бы like и были созданы индексы по полю поиска, даже если размеры таких таблиц будут в миллиард записей поиск всё равно будет быстрее. 3) Как вариант - делать поиск по полнотекстовому индексу и только если ничего не найдено искать уже более пристально - это сильно уменьшит количество запросов на полный поиск. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |