Как оптимизировать хранение повторяющихся значений в столбце mysql? - PullRequest
0 голосов
/ 27 марта 2020

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

Я использую MariaDB 10.

1 Ответ

1 голос
/ 28 марта 2020

Это зависит.

  • Если эти строки в основном разные, не делайте ничего особенного.
  • Вы можете получить небольшую экономию, сжав строки и используя TINYBLOB. Но хлопот не стоит. (Я приводил доводы в пользу таких больших строк.
  • Если много повторений, вы можете их "нормализовать". (Другая таблица с id + string; затем замените строковый столбец на ids.) A 2- байт SMALLINT UNSIGNED не будет переполнен до 65K.

Но ... Сделайте математику. Сколько вы можете сэкономить? Если это меньше 10%, одно из моих Правил гласит: не беспокойтесь ".

Имейте в виду, что большинство" решений "- это компромисс между скоростью и пространством.

Вы подразумеваете, что все они равны 32? Если они шестнадцатеричные или ascii, то используйте

CHAR(32) CHARACTER SET ascii

Затем используйте ascii_general_ci (например, шестнадцатеричный) для складывания кейса или ascii_bin для складывания не (например, base64).

(Примечание: если вы предоставите более подробную информацию Мне не нужно будет так много размахивать руками.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...