pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Gregory Stark <stark@enterprisedb.com>
To: Jay <arrival123@gmail.com>
Cc: pgsql-performance@postgresql.org
Subject: Re: Using PK value as a String
Date: Mon, 11 Aug 2008 10:30:31 +0100
Message-ID: <874p5ruceg.fsf@oxford.xeocode.com> (raw)
In-Reply-To: <9e3be050-8b96-45d9-9bf3-b333bdee0405@i24g2000prf.googlegroups.com>
References: <9e3be050-8b96-45d9-9bf3-b333bdee0405@i24g2000prf.googlegroups.com>

"Jay" <arrival123@gmail.com> writes:

> I have a table named table_Users:
>
> CREATE TABLE table_Users (
>    UserID       character(40)  NOT NULL default '',
>    Username   varchar(256)  NOT NULL default '',
>    Email          varchar(256) NOT NULL default ''
>    etc...
> );
>
> The UserID is a character(40) and is generated using UUID function. We
> started making making other tables and ended up not really using
> UserID, but instead using Username as the unique identifier for the
> other tables. Now, we pass and insert the Username to for discussions,
> wikis, etc, for all the modules we have developed. I was wondering if
> it would be a performance improvement to use the 40 Character UserID
> instead of Username when querying the other tables, or if we should
> change the UserID to a serial value and use that to query the other
> tables. Or just keep the way things are because it doesn't really make
> much a difference.

Username would not be any slower than UserID unless you have a lot of
usernames longer than 40 characters.

However making UserID an integer would be quite a bit more efficient. It would
take 4 bytes instead of as the length of the Username which adds up when it's
in all your other tables... Also internationalized text collations are quite a
bit more expensive than a simple integer comparison.

But the real question here is what's the better design. If you use Username
you'll be cursing if you ever want to provide a facility to allow people to
change their usernames. You may not want such a facility now but one day...

-- 
  Gregory Stark
  EnterpriseDB          http://www.enterprisedb.com
  Ask me about EnterpriseDB's On-Demand Production Tuning



view thread (23+ messages)  latest in thread

Message-ID: <874p5ruceg.fsf@oxford.xeocode.com>
Permalink:  ../874p5ruceg.fsf@oxford.xeocode.com/
Also on:    postgresql.org/message-id/874p5ruceg.fsf@oxford.xeocode.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: stark@enterprisedb.com, arrival123@gmail.com
  Subject: Re: Using PK value as a String
  In-Reply-To: <874p5ruceg.fsf@oxford.xeocode.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox