Как быстро добавить поле со значениями в большую таблицу?
id - primary, int
text - text
url - text
Таблица сильно разрослась. Получалось, что в поле "url" могло много раз повторяться одно и то же значение, что ни разу не экономило место. Было бы логично, создать таблицу t2:
id_url - primary
url - unique
, где соответственно хранить эти значения уникально, а в таблицу t1 только идентификатор засовывать.
Понадобилось добавить поле "id_url", в котором будет храниться уникальный идентификатор для "url" и удалить поле "url":
id - primary, int
text - text
id_url - int
Таблицу t2 создал. Это легко. А дальше как?
Надо тупо пробежать по таблице t2 и обновлять таблицу t1:
UPDATE t1 SET t1.id_url = SELECT t2.id_url WHERE t2.url
Только это оооочень долго получается. Есть быстрее способы?
надеюсь вы поймете и поможете =)
Цитата: MasterKlass
Есть таблица t1:
id - primary, int
text - text
url - text
Таблица сильно разрослась. Получалось, что в поле "url" могло много раз повторяться одно и то же значение, что ни разу не экономило место. Было бы логично, создать таблицу t2:
id_url - primary
url - unique
, где соответственно хранить эти значения уникально, а в таблицу t1 только идентификатор засовывать.
Понадобилось добавить поле "id_url", в котором будет храниться уникальный идентификатор для "url" и удалить поле "url":
id - primary, int
text - text
id_url - int
Таблицу t2 создал. Это легко. А дальше как?
Надо тупо пробежать по таблице t2 и обновлять таблицу t1:
UPDATE t1 SET t1.id_url = SELECT t2.id_url WHERE t2.url
Только это оооочень долго получается. Есть быстрее способы?
надеюсь вы поймете и поможете =)
id - primary, int
text - text
url - text
Таблица сильно разрослась. Получалось, что в поле "url" могло много раз повторяться одно и то же значение, что ни разу не экономило место. Было бы логично, создать таблицу t2:
id_url - primary
url - unique
, где соответственно хранить эти значения уникально, а в таблицу t1 только идентификатор засовывать.
Понадобилось добавить поле "id_url", в котором будет храниться уникальный идентификатор для "url" и удалить поле "url":
id - primary, int
text - text
id_url - int
Таблицу t2 создал. Это легко. А дальше как?
Надо тупо пробежать по таблице t2 и обновлять таблицу t1:
UPDATE t1 SET t1.id_url = SELECT t2.id_url WHERE t2.url
Только это оооочень долго получается. Есть быстрее способы?
надеюсь вы поймете и поможете =)
Вам нужно выполнить эту операцию один раз. В чем проблема то? проиндексируйте поле url в первой таблице и выполните.