powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Группы объектов
14 сообщений из 14, страница 1 из 1
Группы объектов
    #35808611
goodkat_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть элементарная задача: хранить список объектов, список групп и принадлежность объектов к группам.
Как лучше спроектировать БД, чтобы запрос вида "найди данные объектов из заданной группы" выполнялся максимально быстро?

Напрашивается решение:
objects: id, data
groups: id, ...
objects_in_groups: id, group_id, object_id

Запрос:
select objects.data
from objects, objects_in_groups
where objects.id = objects_in_groups.object_id and objects_in_groups.group_id = 128

Но на практике, даже при создании индексов по нужным полям, такой запрос выполняется очень долго.

Какие могу быть варианты?
...
Рейтинг: 0 / 0
Группы объектов
    #35808797
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodkat_Какие могу быть варианты?
Ваш вариант работоспособный. Разбирайтесь, какие индексы построены и почему в них сервер не попадает. Рабочий DDL есть?
...
Рейтинг: 0 / 0
Группы объектов
    #35808859
goodkat_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.

Тогда возможно это особенность конкретной СУБД....
...
Рейтинг: 0 / 0
Группы объектов
    #35808878
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodkat_Есть элементарная задача: хранить список объектов, список групп и принадлежность объектов к группам.
Как лучше спроектировать БД, чтобы запрос вида "найди данные объектов из заданной группы" выполнялся максимально быстро?

Напрашивается решение:
objects: id, data
groups: id, ...
objects_in_groups: id, group_id, object_id

Запрос:
select objects.data
from objects, objects_in_groups
where objects.id = objects_in_groups.object_id and objects_in_groups.group_id = 128

Но на практике, даже при создании индексов по нужным полям, такой запрос выполняется очень долго.

Какие могу быть варианты?Сначала нужно понять, сколько записей возвращает такой запрос. Если милион, то ничего удивительного нет

Если мало, то нужно задать вопрос в фруме по соответствующей СУБД - там помогут найти проблему.
...
Рейтинг: 0 / 0
Группы объектов
    #35808981
goodkat_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Размер выборки колеблется от, примерно, одно тысячной до одной сотой от размера таблицы объектов (2 000-20 000).
...
Рейтинг: 0 / 0
Группы объектов
    #35809112
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodkat_Размер выборки колеблется от, примерно, одно тысячной до одной сотой от размера таблицы объектов (2 000-20 000).И "такой запрос выполняется очень долго" - это сколько?
...
Рейтинг: 0 / 0
Группы объектов
    #35809115
goodkat_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,

около минуты
...
Рейтинг: 0 / 0
Группы объектов
    #35809136
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodkat_alexeyvg,

около минутыТут нужно разделить процессорное время и время получения ответа на клиенте.

Процессорное время должно быть меньше, а время получения ответа на клиенте для 10000 строк по одному килобайту и в сети с каналом 1 мб/сек получается 10 секунд - не так уж и мало. А может, там по 100 килобайт данные в каждой строке?
...
Рейтинг: 0 / 0
Группы объектов
    #35809150
goodkat_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvggoodkat_alexeyvg,

около минутыТут нужно разделить процессорное время и время получения ответа на клиенте.

Процессорное время должно быть меньше, а время получения ответа на клиенте для 10000 строк по одному килобайту и в сети с каналом 1 мб/сек получается 10 секунд - не так уж и мало. А может, там по 100 килобайт данные в каждой строке?

Я имел в виду полное время получения ответа. Запрос выполняется локально.
...
Рейтинг: 0 / 0
Группы объектов
    #35809189
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodkat_ пишет:

> Размер выборки колеблется от, примерно, одно тысячной до одной сотой от
> размера таблицы объектов (2 000-20 000).

20тыщ - тоже много. до 2-3 тысяч старайтесь попадать.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Группы объектов
    #35809205
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А название СУБД мы так и не услышали...
...
Рейтинг: 0 / 0
Группы объектов
    #35809380
goodkat_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть при запросе данного типа происходит большой seek scan и вопрос уже упирается в дисковую подсистему? Сколько примерно записей в секунду может прочитаться при произвольном доступе с БД, считая, что происходит чтение с диска?
...
Рейтинг: 0 / 0
Группы объектов
    #35809392
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goodkat_Может быть при запросе данного типа происходит большой seek scan и вопрос уже упирается в дисковую подсистему? Сколько примерно записей в секунду может прочитаться при произвольном доступе с БД, считая, что происходит чтение с диска?Зависит от размера записи, от диска и от того, кто ещё борется за дисковые ресурсы.

Вообще примерно ненамного меньше паспортной скорости дисков.

И СУБД назовите. По конкретной СУБД вам сразу подскажут, что посмотреть и что сделать.

Пока ваше описание звучит как-то... неопределённо. :-)
...
Рейтинг: 0 / 0
Группы объектов
    #35809435
goodkat_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvggoodkat_Может быть при запросе данного типа происходит большой seek scan и вопрос уже упирается в дисковую подсистему? Сколько примерно записей в секунду может прочитаться при произвольном доступе с БД, считая, что происходит чтение с диска?Зависит от размера записи, от диска и от того, кто ещё борется за дисковые ресурсы.

Вообще примерно ненамного меньше паспортной скорости дисков.

И СУБД назовите. По конкретной СУБД вам сразу подскажут, что посмотреть и что сделать.

Пока ваше описание звучит как-то... неопределённо. :-)

спасибо :)

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


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