2013-11-25 4 views
0

У меня есть база данных (Oracle) со многими таблицами, например: КЛИЕНТЫ, ПРОДУКТЫ, ОПЕРАЦИИ и т. Д. Я хочу реализовать поисковик, который позволит мне написать фразу «MA» и дать подсказки:Поиск базы данных во многих таблицах

MA РИА Клиент

MA STERMIND Продукт

RE MA PPING Операция

и т. Д.

Как достичь этого? Каков подход к этому? Должен ли я создать другую таблицу, будут ли все имена (имя клиента, название продукта, название операции ...)? Или просто искать во всей таблице, используя множество условий LIKE? Как это сделать эффективно?

Многие люди отметили мой вопрос как дубликат, поэтому я хочу объяснить: я не ищу решение, которое я хочу использовать один раз, мне нужно реализовать его в одной производственной среде, где многие люди будут искать такую ​​информацию выше. Я знаю, что могу создать динамический sql из dba_tables, dba_tab_columns views, но я хочу подготовить эффективный способ сделать это! Использование предложения LIKE в WHERE не будет использовать индексы, поэтому у меня будет полное сканирование таблицы - это не будет работать в системе со многими пользователями и большими таблицами. Для знаю, я бы подумал о создании таблицы с ключевым словом с индексом домена в столбце ключевых слов и использованием CONTAINS вместо LIKE, но, возможно, у вас есть другая идея. Может быть, у другого механизма базы данных есть функции, которые могут мне помочь?

ответ

0

Читайте об UNION и VIEW. Какой из них следует использовать, зависит от размера вашей базы дат и сложности запроса.

+0

Если я считаю, используя индексы домена и «содержит» оператор? Для LIKE индексы b-tree не будут работать – user3032111

Смежные вопросы