SQL распределяет данные между таблицами - PullRequest
0 голосов
/ 09 апреля 2011

Я проектирую очень большую базу данных.

Данные будут содержать отношения между элементами.

Я бродил, смогу ли я добиться большей производительности, используя меньшие таблицы. Я думаю, что выполнение операций для выбора отношений элементов в большой таблице может быть менее эффективным, чем выбор только таблиц с нужными элементами.

Пример

Вариант 1 :

tableItems:
item1 | item2 | оценка

Опции 2:

tabelItem1

item2 | оценка

В конце концов, когда данные будут заполнены, у меня будет таблица n 2 со всеми оценками между элементами, поэтому, если я хочу найти элемент 1 по отношению к другим элементам, я думаю, что будет больше Эффективно извлекать данные из выделенной таблицы (а не делать выборку на огромной таблице n 2 ).

Это хорошее решение? или есть какая-то оптимизация SQL, которая будет работать лучше?

Ответы [ 3 ]

5 голосов
/ 09 апреля 2011

Я думаю, что одна таблица - тогда используйте индексацию и разбиение для оптимизации.

2 голосов
/ 10 апреля 2011

Вариант 1, потому что он нормализован.

С вариантом 2 (если я правильно понимаю) у вас будет несколько (тысячи?) Таблиц, по одной на каждый элемент? Нет, нет, нет к этому.

JOINs - ваши друзья.Спланируйте свои запросы и индексы, которые вам понадобятся, а затем подумайте о секционировании или кластерах, когда (и если) ваша база данных станет огромной.

0 голосов
/ 09 апреля 2011

Присоединение к таблицам происходит медленно.

Я видел чрезмерную нормализацию, парализующую проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...