У меня есть таблица с около 20 столбцами.10 из них, как правило, имеют 1 из 15 или около того возможных значений (разные для каждого столбца).Кроме того, один столбец имеет длинную строку.Таблица в настоящее время имеет более 3 миллионов строк и продолжает расти.Он имеет размер около 1 ГБ (только данные)
- Я бы хотел отделить большой текстовый столбец, поскольку он используется не часто и, вероятно, значительно уменьшит размер таблицы, что приведет к повышению производительности.
- Я бы хотел "нормализовать" все эти повторяющиеся столбцы в отдельной таблице (каждой), чтобы я мог получить список текущих значений без выполнения 10
distinct
запросов в 3M строках.Это займет много времени.
# 2 будет отношения один ко многим.# 1 может быть 1-к-1 или 1-ко-многим.Мне все равно.
Вопрос: можно ли это сделать с помощью операторов чистого SQL?Как?Или мне нужно написать программу, чтобы поместить данные в новую таблицу, получить PK и вставить его в правый столбец, по одной строке за раз?
Редактировать
Вот пример того, что я пытаюсь сделать:
ID Field1 Lookup Text
10 val1 look1 some very long text
11 val2 look2 more very long text
12 val2 look1 NULL
13 val4 look1 some very long text
.
.
.
На это:
ID Field1 Lookup Text
10 val1 1 1
11 val2 2 2
12 val2 1 0
13 val4 1 4 (1?)
.
.
.