मुझे नहीं लगता कि इसके बजाय चार या वर्चर का उपयोग करना पूर्णांक अच्छा विचार है। यह अपेक्षा करना कठिन है कि यह पूर्णांक PK की तुलना में कितना धीमा होगा, लेकिन यह डिज़ाइन धीमा होगा - जब आप बड़ी तालिकाओं में शामिल होंगे तो प्रभाव अधिक भयानक होगा। यदि आप कर सकते हैं, तो इसके बजाय ENUM प्रकारों का उपयोग करें।
http://www.postgresql.org/docs/9.2/static /datatype-enum.html
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
CREATE TABLE person (
name text,
current_mood mood
);
INSERT INTO person VALUES ('Moe', 'happy');
SELECT * FROM person WHERE current_mood = 'happy';
name | current_mood
------+--------------
Moe | happy
(1 row)
PostgreSQL varchar और char प्रकार बहुत समान हैं। आंतरिक कार्यान्वयन समान है - चार रिक्त स्थान के कारण थोड़ा धीमा (यह विरोधाभास है) हो सकता है।