Вставить много строк в одну таблицу ИЛИ вставить строки отдельно во многие таблицы? - PullRequest
0 голосов
/ 14 мая 2011

У меня есть две таблицы базы данных (SQL CE).A Учитель стол и A Класс стол.Две таблицы имеют отношение «один ко многим», когда один учитель имеет много классов (например, Класс имеет внешний ключ teacher_id ).Количество учителей (строк) вставляется (или генерируется) с помощью кода C # во время выполнения, так что классы

Что из следующего быстрее в INSERT и SELECT?

  1. Каждый разновый учитель вставляется, создается новая таблица классов (например, Class_teacher001) для хранения любых классов, которые есть у учителя.В этом случае каждая таблица классов не должна быть такой большой, и внешний ключ не нужен, потому что имя таблицы будет идентифицировать себя.Но будет один Учительский стол и много Class_xxx Таблиц
  2. Только один Учительский стол и один Классный стол.Каждая строка класса имеет внешний ключ, указывающий на таблицу учителя.Только одна таблица классов, но она будет очень длинной.Я беспокоюсь, что поиск и чтение будут медленными

Ответы [ 4 ]

5 голосов
/ 14 мая 2011

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

Кошмар поддержки опции (1) заставляет меня вздрогнуть

1 голос
/ 14 мая 2011

ОК, с чего начать.Во-первых, отношения между Учителем и Классом потенциально много-ко-многим, но, как вы описали, это как минимум один-ко-многим.

Первый вариант - абсолютно неправильный путь.Никогда не создавайте таблицы динамически.Второй вариант - как с этим обращаться.Базы данных являются мощными, написаны очень умными людьми (обычно) и могут обрабатывать намного больше строк, чем все учащиеся в данной школе.

Пока вы правильно индексируете свои таблицы, они могут легко поддерживать сотни миллионовзаписей.

0 голосов
/ 14 мая 2011

Если у вас уже нет проблем с производительностью, я бы не беспокоился о них. Есть много вещей, которые могут вызвать проблемы с производительностью, кроме количества строк, и они должны решаться по-разному в зависимости от того, что они есть. Вам нужно больше беспокоиться о количестве столбцов в таблице, влияющих на производительность, чем о количестве строк. Также количество одновременных подключений к базе данных. Один миллион строк в таблице - это не так уж много, а два других элемента в сочетании с таким количеством строк замедляют работу базы данных. Вы должны использовать второй вариант.

0 голосов
/ 14 мая 2011

Я также согласен с Митчем Уитом. Потому что, когда вы создаете индекс, ваша таблица физически сортируется в соответствии с тем, как наш Учитель создает комбинированный индекс (Teacher_Id, Class_Id). Хотя это поможет быстро получить Избранный Устав.

...