Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Посоветуйте как лучше сделать / 7 сообщений из 7, страница 1 из 1
21.07.2006, 10:30
    #33869048
Безон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше сделать
Задача:
есть таблица с N булевыми столбцами b(i) (так же в таблице может быть столбец B из N бит у которого k бит установлен в 1 если k булевый столбец имеет значение true)
Требуется выбирать все подходящие записи из таблицы по условиям вида:
b(k1) and b(k2) and ... and b(km) (или B&param=param) наиболее быстрым способом. Соответственно SeqScan не подходит так как в таблице очень много записей (несколько миллионов).
...
Рейтинг: 0 / 0
21.07.2006, 12:09
    #33869516
SOmni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше сделать
Если я правильно понял задачу, то лучше эти данные не пихать в единственную таблицу. Имею в виду, что у тебя матрица из нулей и единиц, а с боку к ней еще какой-то массив прибит в виде B?
Если так, то может проще B в отдельно табличке сделать. А записи там будут, например, только те, которые указывают на 1-цы в первой таблице...
Ради интереса. Это какая-то практическая задача или чисто алгоритмическая?
...
Рейтинг: 0 / 0
21.07.2006, 12:13
    #33869540
Владимор Конев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше сделать
SOmniРади интереса. Это какая-то практическая задача или чисто алгоритмическая?Интересная постановка вопроса. А что, задача не может быть одновременно и практичекой и алгоритмической? Или-таки вместо "алгоритмическая" необходимо читать "теоретическая"?
...
Рейтинг: 0 / 0
21.07.2006, 12:17
    #33869563
Безон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше сделать
SOmniЕсли я правильно понял задачу, то лучше эти данные не пихать в единственную таблицу. Имею в виду, что у тебя матрица из нулей и единиц, а с боку к ней еще какой-то массив прибит в виде B?
Если так, то может проще B в отдельно табличке сделать. А записи там будут, например, только те, которые указывают на 1-цы в первой таблице...
Ради интереса. Это какая-то практическая задача или чисто алгоритмическая?
Неправильно понял задачу:-))
Задача звучит так: есть товар, у товара может быть свойство или не быть (0 или 1). товаров много, свойств тоже много. Нужно найти в базе все товары с указанными пользователем свойствами.
Например если товар телевизоры то примеры свойст такие: (картинка в картинке, плоский, 16на9, долби диджитал и т.д.)
...
Рейтинг: 0 / 0
21.07.2006, 12:39
    #33869669
SOmni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше сделать
Владимор Конев SOmniРади интереса. Это какая-то практическая задача или чисто алгоритмическая?Интересная постановка вопроса. А что, задача не может быть одновременно и практичекой и алгоритмической? Или-таки вместо "алгоритмическая" необходимо читать "теоретическая"?
Да я это к тому, что как-то всё расплывчато... битовые маски какие-то... Может и БД тут нафиг не нужна, а человек заблудился просто :)
Теперь всё встало на свои места...
Вариант: берем табличку table_1, в которой есть поля
id_goods
id_property
Заполняем для всех товаров, какие свойства у них есть
ну и потом
select g.* from goods g, table_1 t where g.id=t.id_goods and g.id_property in (1,5,7,8...)
--------------
теперь правильно понял задачу? :)
...
Рейтинг: 0 / 0
21.07.2006, 12:41
    #33869677
SOmni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше сделать
ошибочка вышла. так, конечно:
select g.* from goods g, table_1 t where g.id=t.id_goods and t.id_property in (1,5,7,8...)
----------
ну и индексы не забыть, работать должно быстро
...
Рейтинг: 0 / 0
21.07.2006, 13:16
    #33869852
Безон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше сделать
SOmniошибочка вышла. так, конечно:
select g.* from goods g, table_1 t where g.id=t.id_goods and t.id_property in (1,5,7,8...)
----------
ну и индексы не забыть, работать должно быстро
можно попробовать:-) спасиб
только нужно учесть что в таблице goods будет около миллиона записей и у каждого товара около 100 свойств. то естьв таблице table_1 будет около 100 мульенов записей.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Посоветуйте как лучше сделать / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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