Na minha opinião você está lutando a batalha errada. Você está preocupado com o impacto no desempenho de armazenar um inteiro em vez de um campo de caractere único, o que, na minha opinião, é um pensamento míope. O impacto real no desempenho de um inteiro versus um único caractere é trivial, e duvido que isso possa ser medido de forma significativa. Na minha experiência, é mais importante reduzir a carga cognitiva dos desenvolvedores e usuários do sistema e, portanto, é melhor usar campos de caracteres longos o suficiente para conter uma descrição razoável do status em vez de valores numéricos ou abreviações de caracteres únicos. Não ter que lembrar o que 1, 2, 'A' ou 'X' significam é muito útil. Em vez desses valores abreviados, sugiro usar valores fáceis de entender, como 'READY', 'ACTIVE', 'PROCESSED', 'CANCELLED', etc.
Quanto à segunda parte da pergunta - não realmente. Pode haver uma quantidade trivial de tempo para mover a string mais longa, mas é trivial, a menos que você esteja falando de milhões de valores.
Boa sorte.