At 10:09 a.m. 3/10/2015, Köditz, Martin [email protected] 
[firebird-support] wrote:
> 
>I’m using integer IDs for primary keys in my tables. What if I would use 
>varchar fields instead? Will I lose performance in that case, especially for 
>big tables? Will joins still work as fast as they do for the integer column.
> 
>In my case I have a table TBL_BANK ( 
>BANK_ID int, 
>BIC varchar(11), 
>…
>)
> 
>So what will happen if I switch the PK to BIC in that case? I would change the 
>FKs to BIC too. I don’t know how the index keys are build and stored in 
>firebird. So I cannot say this way is faster than the other one. But maybe 
>someone else can do.

The one to give you the inside story on the relative performance of integer 
versus an 11-character key of 7-bit single-byte characters is Ann Harrison, so 
be patient and I am sure she will answer you when next she steps ashore.  

Although I don't think a BIC (max. 77 bits, commonly 56 bits) would be too much 
slower than an integer (32 bits) I would not recommend abandoning your atomic 
keys for keys that are subject to changes by humans.  BICs do not change often 
but they do change!  Besides, humans will be entering them into the database, 
which also makes them a risk to data integrity.

Helen

Reply via email to