Не тратьте время на оптимизацию, пока не сможете доказать , что это узкое место и самое важное, что нужно исправить.
"Для экономии места ..."нет.Космос практически свободен.Если у вас нет терабайта данных, вам не о чем беспокоиться.Вы можете легко тратить больше времени на размышления о хранилище, чем оно того стоит.
Решение varchar будет работать и нормально масштабироваться.Идея «пула строк» или «таблицы атомов» на самом деле хорошая, потому что у вас будет много ссылок на один и тот же базовый объект.Зачем повторять варчар?Почему бы просто не повторить номер индекса?
«Произвольно большой текст» - странное требование.Зачем?
Капля будет, как правило, медленнее.Столкновение с хешем - хотя и немного больше, чем теоретическая проблема - это то, с чем вы можете справиться двумя способами.Во-первых, используйте хэш с более чем 32 битами.Во-вторых, столкновение ничего не испортит, если только вы (по глупости) не сможете проверить настоящие капли, чтобы увидеть, действительно ли они одинаковые.Если вы хотите избежать сравнения всего большого двоичного объекта, чтобы убедиться в отсутствии коллизий, сохраняйте два хэша по разным алгоритмам.