Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Как организовать поиск в БД по многим признакам?Чем может помочь OLAP? / 2 сообщений из 2, страница 1 из 1
12.11.2004, 00:41
    #32778583
makondo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать поиск в БД по многим признакам?Чем может помочь OLAP?
Сразу скажу, что с OLAP никак не знаком, кроме определения, попытка решить проблему привела сюда.

Oracle 10g, таблица миллионов на 6-7.
У каждого ID есть набор битовых признаков 1\0. Их много, в разных реализациях от нескольких десятков до нескольких сотен.
В реализации они объединяются в 2 поля типа int по битам.

Нужно искать по шаблону - битовой маске запрос типа
SELECT * FROM table
WHERE BITAND(S1, :inS1)=S1
AND BITAND(S2, :inS2)=S2

(BITAND - это в оракле побитовое умножение)

То есть, поиск, учитывающий очень много признаков. Oracle тормозит, время работы запросы неприемлемое.

Эти признаки иногда(редко) изменяются - порядок сотни в месяц. Добавлять новые записи приходится постоянно - несколько десятков тысяч в неделю.

Наболевшие вопросы:

1. Как можно применить инструменты OLAP, встроенные в Oracle, чтобы ускорить поиск?

2. Что для этого нужно сделать? И что почитать(чтобы примеры были)?

Тему я начинал здесь:
http://www.sql.ru/forum/actualthread.aspx?tid=127972&hl=bitand

Наверняка, OLAP как-то должен помочь, я это чую :)
...
Рейтинг: 0 / 0
12.11.2004, 10:18
    #32778913
Dmitry Biryukov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать поиск в БД по многим признакам?Чем может помочь OLAP?
вообще-то олап не подходит для поиска записей в реляционных БД...
Вот если бы вам надо было анализировать какие-то показатели в зависимости от битовых признаков - тогда это сюда.
т.е. такой запрос ОЛАП не ускорит
Код: plaintext
1.
2.
SELECT * FROM table 
WHERE BITAND(S1, :inS1)=S1 
AND BITAND(S2, :inS2)=S2 

а вот такой:
Код: plaintext
1.
2.
3.
4.
SELECT SUM(Sales), SUM(Cost),S3,S4,S45 FROM table 
WHERE BITAND(S1, :inS1)=S1 
AND BITAND(S2, :inS2)=S2
GROUP BY S3,S4,S45

запросто!
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Как организовать поиск в БД по многим признакам?Чем может помочь OLAP? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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