powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Эффективный поиск
7 сообщений из 7, страница 1 из 1
Эффективный поиск
    #33275328
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,

У меня возник следующий вопрос по поводу организации поиска по базе данных.
В данный момент я представлю это себе так:
1.берём список всех таблиц в который нада будет искать
2.начинаем их перебирать одна за другой, берем самую первую
3.ищем хитрым запросом сначала в столбце 1 потом 2 итд(fulltext searching)...
4.переходим к следующей таблице и так до конца.

Скажите насколько правилен мой подход, есть ли варианты по-эффективнее?
...
Рейтинг: 0 / 0
Эффективный поиск
    #33275534
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что у вас хранится в разных таблицах, что искать приходится по всем им?
И вопрос по пункту 3: почему "хитрым запросом" надо искать по различным столбцам отдельно?
...
Рейтинг: 0 / 0
Эффективный поиск
    #33275564
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да разная инофрмация хранится по разным таблицам, например есть таблица новсти с полями как заголовок и тело новости, вот занчит придется искать уже по двум столбцам таблицы. И далее есть таблица статьи, итд...
...
Рейтинг: 0 / 0
Эффективный поиск
    #33275573
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чём принципиальное отличие новостей и статей?
В принципе, можно было бы и в одной таблице хранить...
Но с такой структурой -- да, придётся искать в разных. Результаты поиска можно объединить UNIONом, скажем, если версия MySQL позволяет.
Касательно же поиска отдельно в заголовке и тексте -- это нужно если только вы действительно хотите искать отдельно в заголовке, и отдельно в тексте. Если же явного такого намерения нету -- то
Код: plaintext
1.
WHERE MATCH(header, text) AGAINST('pattern')
должно быть достаточно.
...
Рейтинг: 0 / 0
Эффективный поиск
    #33275588
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DocAlА в чём принципиальное отличие новостей и статей?
На уровне хранения даных разницы нет, но на логическом уровне в новостаях хранятся новости а в статьях статии. Говоря простым языком порядка больше.
...
Рейтинг: 0 / 0
Эффективный поиск
    #33275702
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У этой проблемы есть несколько аспектов. (даже не считая ваши выпады в соседней ветке на эту тему ,) )
Во-первых, fulltext реализован только для таблиц типа MyISAM, и если вы так заботитесь о целостности данных, это повод минимизировать использование этого типа таблиц, а точнее, объём хранящихся в них данных в БД.
Во-вторых, мой и ваш взгляд на вопрос отличается уровнем абстрагированности.
С моей точки зрения, что статья, что новость, что комментарий, что личное сообщение -- все они обладают такими арибутами как заголовок, автор, время написания, собственно текст. Для всех них пользователь ожидает возможности поиска по содержимому и заголовку. Конечно, при поиске по личным сообщениям необходимо наложить ограничение "видимости" для пользователя, осуществляющего поиск. Однако же, это единообразно структурированная сущность, под которую разумно выделить таблицу.
Третий аспект этой проблемы -- это поведение MySQL в том случае, если на столбец в таблице накладывается условие NOT NULL. Дело в том, что будучи СУБД, работающей как с транзакционными таблицами, так и таблицами, транзакции не поддерживающими, в случае, когда в запросе INSERT/UPDATE/REPLACE для записи не указано содержимое поле с атрибутом NOT NULL, сервер ведёт себя не совсем ожидаемым образом -- он не возвращает ошибку, а записывает в такое поле "умолчальное" значение, например 0 для целочисленного типа, пустую строку для символьного и т.п. Причём в стабильной версии такое поведение характерно для всех таблиц, даже поддерживающих ROLLBACK. В бете 5 ветки изменить такое поведение, кажется, возможно, но бета -- она бета и есть. Таким образом, сохранение целостности данных вроде "обязательного указания автора статьи" этим аттрибутом не добиться, и всё равно это придётся отрабатывать на клиенте, и плодить множество таблиц под новости отдельно, под статьи отдельно смысла нету.
...
Рейтинг: 0 / 0
Эффективный поиск
    #33275718
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок понял,
Вы предлагаете упростить этапy 1 & 2 упразнив организацию таблиц(все в одну), тем самым поднять продуктивность поиска.
Спасибо
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Эффективный поиск
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]