powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Что быстрее join или group by?
14 сообщений из 14, страница 1 из 1
Что быстрее join или group by?
    #34019615
Granmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зашел тут у нас спор, что лучше сделать набор нормализованных таблиц или одну плоскую? Т.е. в случае плоской таблицы для группировки выборки будет использоваться group by, а в случае нескольких таблиц inner join. Какой тип выборки будет работать быстрее?
...
Рейтинг: 0 / 0
Что быстрее join или group by?
    #34019635
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GranmerЗашел тут у нас спор, что лучше сделать набор нормализованных таблиц или одну плоскую?
Бывают сферические?
GranmerТ.е. в случае плоской таблицы для группировки выборки будет использоваться group by, а в случае нескольких таблиц inner join. Какой тип выборки будет работать быстрее?
Нельзя ли посмотреть на пример группировки JOIN-ом ?
...
Рейтинг: 0 / 0
Что быстрее join или group by?
    #34019755
Артем DIABLO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UNION ALL решает :-)
...
Рейтинг: 0 / 0
Что быстрее join или group by?
    #34019818
Сергей08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да не.
Ребята собрались и думают: А не дурак ли придумал эту нормализацию?
Может ну её ...
Вообще то есть выражение - "переномализация'
А вот где она начинаеться это уже сложнее!
...
Рейтинг: 0 / 0
Что быстрее join или group by?
    #34019879
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все данные вообще можно хранить в одной колонке типа IMAGE в одной таблице. Несколько таблиц, да ещё несколько колонок в каждой - что за чушь придумал какой-то дурак! :-))
...
Рейтинг: 0 / 0
Что быстрее join или group by?
    #34022564
Granmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принципе, другой реакции и ждать было нечего. Вопрос криво задан :).
Попробую уточнить. Проектируем адресный план.
1 вариант. Таблица - 11 полей: 8 из них являются идентификаторами справночников (страна, область, город улица и т.п.) заканчивается таблица номером помещения и ещё некоторыми параметрами. Т.е. в данном случае справочники не выстраиваются взаимосвязями иерархически (страна - области страны - области), а эти ваимосвязи харанятся все вместе в каждой строчке таблицы. Т.е. первичный ключ квартиры получается составной (проимерно из 8 полей) или можно ввести отдельное уникальное поле.
2 вариант. Справочники соединяются согласно НФ т.е. выстраивается иерархия взаимосвязанных таблиц (страна - области страны - области - города областей - города и т.д.).
Во втором варианте больше количество таблиц - соответственно больше JOINов в первом одна таблица, но существенного размера, в которой частенько для получения информации верхнего уровня придется использовать группировки.
Вот и вопрос, что лучше. Может есть у кого-нибудь доводы какие?
...
Рейтинг: 0 / 0
Что быстрее join или group by?
    #34022978
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GranmerВ принципе, другой реакции и ждать было нечего. Вопрос криво задан :).
Попробую уточнить. Проектируем адресный план.
1 вариант. Таблица - 11 полей: 8 из них являются идентификаторами справночников (страна, область, город улица и т.п.) заканчивается таблица номером помещения и ещё некоторыми параметрами. Т.е. в данном случае справочники не выстраиваются взаимосвязями иерархически (страна - области страны - области), а эти ваимосвязи харанятся все вместе в каждой строчке таблицы. Т.е. первичный ключ квартиры получается составной (проимерно из 8 полей) или можно ввести отдельное уникальное поле.
2 вариант. Справочники соединяются согласно НФ т.е. выстраивается иерархия взаимосвязанных таблиц (страна - области страны - области - города областей - города и т.д.).
Во втором варианте больше количество таблиц - соответственно больше JOINов в первом одна таблица, но существенного размера, в которой частенько для получения информации верхнего уровня придется использовать группировки.
Вот и вопрос, что лучше. Может есть у кого-нибудь доводы какие?Нормализация придумана не для ускорения или замедления выборки (одни запросы она ускоряет, другие замедляет, ну и шо?) Нормализация нужна для устранения избыточности, которая есть потенциальный источник противоречий, то есть потери целостности БД. То есть если у вас в каждую запись заносится
8 значений, которые точно избыточны, то что помешает внести некоррекное сочетание улицы с одного города с другим городом (и т.п.)? Чтобы предотвратить такие ошибки вам нужно очень сильно попотеть: писать триггеры и т.д. Да и не факт, что в итоге организация целостности "ручками" выйдет без ошибок. То есть поймите, вы просто меняете надежность на скорость. Да и на скорость ли? Да и стоит ли оно того?
...
Рейтинг: 0 / 0
Что быстрее join или group by?
    #34023043
Сергей08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну я не хотел просто похихикать!
Для меня настоящим откровением , в своё время, было существование кроме
слова нормализация выражения перенормализация. И возник вопрос , где же
заканчивать номализовать?
Для меня это решилось когда узнал , что существует ещё
концептуальное проэктирование баз данных.
В каждом конкретном случае приходится решать на какой НФ
остановится. На 3-й? А может у нас будет не более 100 строк и не стоит даже на 2НФ заходить!
По моему мнению проэктирование бд это творческий процесс. Почти интимный.
Только на месте, поговорив со всеми и оглядевшись можно решить какая должна быть структура бд.
...
Рейтинг: 0 / 0
Что быстрее join или group by?
    #34023771
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей08Для меня это решилось когда узнал , что существует ещё
концептуальное проэктирование баз данных. Сергей, это чрезвычайно странная для меня фраза. Дело в том, что наличие такой вещи как концептуальное проектирование БД вообще никак не связано с наличием такой вещи как нормализация. Для меня это прозвучало так же странно, как, скажем, "для меня проблемы со здоровьем решились, когда я узнал о существовании голливудских фильмов". То есть понятия из разных областей, "в огороде бузина, а в Киеве дядька". Вы бы не могли пояснить, что именно вы имелии в виду?
Сергей08В каждом конкретном случае приходится решать на какой НФ
остановится. На 3-й? А может у нас будет не более 100 строк и не стоит даже на 2НФ заходить! Чрезвычайно странные и неверные критерии оценки. Так никто не проектирует. Кто вас учил этакой глупости (чем больше строк, тем выше д.б. нормальная форма)? Это не наезд, просто в жизни я сталкивался с существованием якобы "гуру" которые молодых учат так: "книги фигня, щас я скажу как на самом деле", и при этом забивают им мозги всякой ересью. Ощущение, что вы с кем-то подобным столкнулись, и кто-то вас плохому научил.
Сергей08По моему мнению проэктирование бд это творческий процесс. Почти интимный. Только на месте, поговорив со всеми и оглядевшись можно решить какая должна быть структура бд.Да ни за что. Самые плохие БД выходят, когда к их проектированию подходят как к "творчеству", а не как к строгой инженерной дисциплине.
Среди всех процессов разработки ПО только один является наиболее подкрепленным теорией, предсказуемым, хорошо изученным и описанным. Это проектирование реляционных БД.
Это не значит, что это совсем простой процесс, без головной боли и принятия трудных решений, без творчества и находок. Но преподносить его как "интимное таинство", доступное чуть ли не "посвященным", обычно значит просто не знать полноты теории и не уметь ее применять.
Не обижайтесь, прошу, я не хочу вас обидеть или высмеять, все мы учимся и ошибаемся.
...
Рейтинг: 0 / 0
Что быстрее join или group by?
    #34025306
Сергей08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перед каждым предложением можно смело добавить:
"По моему мнению..."
Код: plaintext
1.
 это чрезвычайно странная для меня фраза. Дело в том, что наличие такой вещи как концептуальное проектирование БД вообще никак не связано с наличием такой вещи как нормализация. 
Да согласен я с этим. Это один из путей получения нормальной формы.
Но это путь не допускающий перенормализации и позволяющий получить
нормальные формы. Нормальные формы, которые будут
не только нормальными, но и обьекты описываемые таблицами будут отражать обьекты
в первую очередь технологического процесса, а затем уже реального мира.


Код: plaintext
1.
Но преподносить его как "интимное таинство", доступное чуть ли не "посвященным",
тебя, похоже, "гуру" и "посвящённые" достали конкретно. Ты по моему их уже
видишь везде. И сразу в бой!!
Здесь я имел ввиду , что нужно очень добросовестно поговорить со всеми пользователями и заказчиками на месте и лично. Определить,например, делать две таблицы автомобиль и водитель или всё таки одна таблица- автомобиль с водителем. И т.д. Некоторые "технологические" обьекты "выплывают"
после беседы с самым , что ни на есть рядовым работником.

Код: plaintext
1.
Кто вас учил этакой глупости (чем больше строк, тем выше д.б. нормальная форма)?
Работал в небольшой фирме. На тот момент там было 40 сотрудников.
Для описания их по 'нормальному' нужно было 3 , а то и 4 таблицы. Я предположил, что если
даже кол-во сотрудников вырастет в 100 раз и при этом не будет
перехода на другую платформу
то решил, что нормализовать ради того, что бы нормализовать по крайней мере глупо.

Код: plaintext
1.
Самые плохие БД выходят, когда к их проектированию подходят как к "творчеству", а не как к строгой инженерной дисциплине.
И здесь согласен. Но, например, проэктирование баз данных для аналитических систем принципиально отличается от проэктирования учётных. А сейчас уже эти(учётные и аналитические) системы всё чаще пересекаются. Далеко не все имеют деньги и желание развивать эти направления отдельно

To mir "А какая, по твоему мнению, главная проблема, решается с помощью нормальных форм?"
...
Рейтинг: 0 / 0
Что быстрее join или group by?
    #34027194
Сергей08
To mir "А какая, по твоему мнению, главная проблема, решается с помощью нормальных форм?"


Так по-моему ясно написано парой постов выше

mir
Нормализация придумана не для ускорения или замедления выборки (одни запросы она ускоряет, другие замедляет, ну и шо?) Нормализация нужна для устранения избыточности, которая есть потенциальный источник противоречий, то есть потери целостности БД.


И я готов под этим подписаться.
...
Рейтинг: 0 / 0
Что быстрее join или group by?
    #34029266
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Сергей08
Совет: для цитат используйте не [[ src ]], а [[ quot ]].
Сергей08 mir это чрезвычайно странная для меня фраза. Дело в том, что наличие такой вещи как концептуальное проектирование БД вообще никак не связано с наличием такой вещи как нормализация.
Да согласен я с этим. Это один из путей получения нормальной формы. Но это путь не допускающий перенормализации и позволяющий получить нормальные формы. Нормальные формы, которые будут не только нормальными, но и обьекты описываемые таблицами будут отражать обьекты в первую очередь технологического процесса, а затем уже реального мира. Странно. Говорите, что согласны, но следующими словами показываете иное. Еще раз: проектируете ли вы на концептуальном или логическом уровне, это никак не связано с тем, будет ли использована нормализация (да и вообще с качеством полученного проекта). Это всего лишь разные уровни абстракции. Похоже, у вас какое-то сугубо свое понимание концептуального проектирования.
Понятие перенормализация , вообще говоря, не существует, это что-то мутное, формально не определенное. С понятием «реальный мир» у вас тоже непонятно, ибо я всегда считал, что объекты технологического процесса вполне к нему относятся.
Сергей08Здесь я имел ввиду , что нужно очень добросовестно поговорить со всеми пользователями и заказчиками на месте и лично. Определить,например, делать две таблицы автомобиль и водитель или всё таки одна таблица- автомобиль с водителем. И т.д. Некоторые "технологические" обьекты "выплывают" после беседы с самым , что ни на есть рядовым работником. Во многом так, но здесь вы говорите о качестве проведенного анализа предметной области, а не о качестве проектирования. Я эти понятия не путаю, и вам предлагаю не смешивать. Проектирование без качественного анализа обречено, но уж если таковой выполнен, то проектирование РДБ есть процесс относительно строгий и технологичный. Незачем его "мистифицировать".
Сергей08Работал в небольшой фирме. На тот момент там было 40 сотрудников.
Для описания их по 'нормальному' нужно было 3 , а то и 4 таблицы. Я предположил, что если даже кол-во сотрудников вырастет в 100 раз и при этом не будет перехода на другую платформу то решил, что нормализовать ради того, что бы нормализовать по крайней мере глупо.Небольшие задачи и в Excel’е простые люди решают, с помощью одной мега-таблице, и не горюют, всю целостность отслеживают «глазами». Но если со временем объемы данных, количество пользователей или сама задача распухают, то зоркий глаз не помогает, и наступает полная задница. Однако то, что простительно простому пользователю, вряд ли можно простить специалисту. Зачем даже на маленькой задаче делать плохо, если можно сделать хорошо? Тем более, что усилий особых и не надо.
Сергей08 Но, например, проэктирование баз данных для аналитических систем принципиально отличается от проэктирования учётных. Это не так, точнее, не совсем так. Отличия есть, но вовсе не принципиальные. Скажем, РСУБД Sybase IQ обычно вообще не требует специального проектирования DSS.
...
Рейтинг: 0 / 0
Что быстрее join или group by?
    #34032535
Сергей08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
mir
Зачем даже на маленькой задаче делать плохо, если можно сделать хорошо?

А хорошо это когда не ниже 5НФ?

Код: plaintext
mir
Sybase IQ обычно вообще не требует специального проектирования DSS.
...
Рейтинг: 0 / 0
Что быстрее join или group by?
    #34032624
Сергей08
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
рука дрогнула
продолжу

Код: plaintext
mir
Sybase IQ обычно вообще не требует специального проектирования DSS.

А причём здесь Sybase IQ. Я тоже знаю эти два слова!!!!
Я как раз написал, что когда не используют специальные продуты типа
Sybase IQ то приходиться мирится с избыточностью данных(т.е. с низкими номерами НФ) , когда совмещаем учёт и аналитику в прог. продукте.
Кстати при представлении данных(витрины данных- во какие слова знаю) и в проэкте с исп-нием Sybase IQ допускается избыточность данных.

Sybase IQ и МS OLAP services это далеко не всё что используеться
в DSS(и это слово я слышал).Или Sybase IQ так уж определяет всю политику проэктирования DSS?
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Что быстрее join или group by?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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