Повышает ли производительность перемещение столбца varchar в другую таблицу, а затем использование объединения? - PullRequest
0 голосов
/ 16 января 2019

У нас есть таблица с 150 миллионами строк, и один из столбцов все еще varchar (128 символов), мы оптимизировали каждый второй столбец до крошечных и аналогичных для уменьшения размера. Мы пытаемся улучшить производительность дальше. Будет ли перемещение столбца в другую таблицу и использование соединения при выборе чего-либо иметь проблемы с производительностью? на данный момент существует около 500 уникальных вариантов, и он не должен превышать рост около 100-200 / год, поэтому теоретически он должен значительно уменьшить размер таблицы.

1 Ответ

0 голосов
/ 16 января 2019

Это зависит от того, как долго эти строки. Тот факт, что строка определена как varchar(128), не означает, что она содержит столько символов. varchar будет содержать длину (один или два байта), а затем данные. В этом случае длина составляет 1 байт.

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

Если ваши строки длинные - скажем, 100 символов - тогда их замена на внешний вид будет меньше. И это может оказать существенное влияние на размер данных (и, следовательно, на производительность).

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

Что вы должны сделать, зависит от ваших данных.

...