Скажем, у меня есть база данных, похожая на это;Оптимизация баз данных SQL путем добавления столбцов индекса
Product with columns [ProductName] [Price] [Misc] [Etc]
Order with columns [OrderID] [ProductName] [Quantity] [Misc] [Etc]
ProductName является первичным ключом продукта, некоторого типа струн и уникальным.
OrderID - это первичный ключ и некоторый целочисленный тип, а ProductName - внешний ключ.
Скажем, я сменил первичный ключ продукта на новый столбец целочисленного типа, то есть [ProductID]
.
Будет ли это уменьшать размер базы данных и оптимизировать поиск, соединяющий эти две таблицы (и аналогичные операции), или эти оптимизации выполняются автоматически (большинство/общие/основные) Реализации SQL-баз данных?
Технически, используя (String) ProductName в качестве первичного ключа в Product
, база данных должна быть в состоянии реализовать столбец ProductName в Order
просто как указатель на строку в Product
, а также выполнять JOIN
, как QuiCly как имеющий целое число, как внешний ключ, является стандартным способом реализации SQL.
Update: Этого вопрос о том, как SQL сервер обрабатывает внешние ключи, не нуждается ли таблица продукта серийного номера, или как я справиться с изменением названия продукта в базе данных.
+1 для указания проблем с изменением названия продукта – Donnie