Jared, I disagree. In some cases, I would support and use natural values for Primary keys.
In the case of State Codes, County Codes, Yes/No codes and other that are too obvious, I really do not see the value of using an sequence number for the PK. I have a YES/NO table in my database. The Web developers use a drop-down field to allow the users to select the value they want (YES or NO). If the developers were required to to support the sequence number, it makes the coding a tiny bit more complicated (obviously, you and I can think of dozens of ways to make it insignificant). I guess I'm thinking that this is one of those personal preference things. My original question was looking for a good reason why I should NOT use chars in an index (thus forcing me to always use a sequence as the PK). So far, I see no reason not to . See ya. Tom Mercadante Oracle Certified Professional -----Original Message----- Sent: Thursday, April 18, 2002 10:27 AM To: [EMAIL PROTECTED]; Mercadante, Thomas F Tom, If you are generating keys as you should be, they will be numeric. Jared On Wednesday 17 April 2002 11:52, Mercadante, Thomas F wrote: > All, > > Does anyone have any specific metrics demonstrating that a PK that is based > on a number field is faster than a PK based on a character field? > > I've seen it mentioned a couple of times today under the "Design Question" > topic. > > It doesn't make any sense to me that one or the other would be faster. > After all, we are talking about comparison searches within the B-Tree index > structure. Why searching down the tree for a number is any faster than a > char is lost on me. > > Just curious if anyone has a reference someplace pointing this out. > > Thanks > > Tom Mercadante > Oracle Certified (Stupified today) Professional > > > -----Original Message----- > Sent: Wednesday, April 17, 2002 2:21 PM > To: Multiple recipients of list ORACLE-L > > > If you go with the first option, you will likely be able to get out of > joining your STATE table to the referencing tables in a bunch of cases > (since the 2-letter abbreviation is interpretable on its own). But if > you'll wind up having to do the join anyway (e.g., to display the > STATE_DESC) then those joins will likely be faster on a numeric... > > HTH, > > -Roy > > Roy Pardee > Programmer/Analyst > SWFPAC Lockheed Martin IT > Extension 8487 > > -----Original Message----- > Sent: Wednesday, April 17, 2002 10:19 AM > To: Multiple recipients of list ORACLE-L > > > To simplify my question, if I am creating a STATE table to hold all the > states of the US, should I create it like this... > > Name Null? Type > ----------------------------------------- -------- > ---------------------------- > STATE_CODE NOT NULL CHAR(2) <-- PK > > STATE_DESC NOT NULL VARCHAR2(50) > > or like this... > > Name Null? Type > ----------------------------------------- -------- > ---------------------------- > STATE_ID NOT NULL NUMBER <-- PK > STATE_CODE NOT NULL CHAR(2) > STATE_DESC NOT NULL VARCHAR2(50) > > I'm trying to figure out which is more efficient, STATE_CODE or STATE_ID, > when doing a PK lookup, dealing with FKs, etc. > > Many TIA!!! > > Chris -- Please see the official ORACLE-L FAQ: http://www.orafaq.com -- Author: Mercadante, Thomas F INET: [EMAIL PROTECTED] Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Lists -------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).