Thread
-
Re: [HACKERS] Large databases, performance
Zeugswetter Andreas DCP SD <zeugswettera@spardat.at> — 2002-10-07T15:42:12Z
> if i'm not mistaken, a char(n)/varchar(n) column is stored as a 32-bit > integer specifying the length followed by as many characters as the > length tells. On 32-bit Intel hardware this structure is aligned on a > 4-byte boundary. Yes. > | opc0 char (3) no no 8 4 > | opc1 char (3) no no 8 4 > | opc2 char (3) no no 8 4 > Hackers, do you think it's possible to hack together a quick and dirty > patch, so that string length is represented by one byte? IOW can a > database be built that doesn't contain any char/varchar/text value > longer than 255 characters in the catalog? Since he is only using fixchar how about doing a fixchar implemetation, that does not store length at all ? It is the same for every row anyways ! Andreas
-
Re: [HACKERS] Large databases, performance
Martijn van Oosterhout <kleptog@svana.org> — 2002-10-08T22:51:11Z
On Mon, Oct 07, 2002 at 05:42:12PM +0200, Zeugswetter Andreas SB SD wrote: > > Hackers, do you think it's possible to hack together a quick and dirty > > patch, so that string length is represented by one byte? IOW can a > > database be built that doesn't contain any char/varchar/text value > > longer than 255 characters in the catalog? > > Since he is only using fixchar how about doing a fixchar implemetation, that > does not store length at all ? It is the same for every row anyways ! Remember that in Unicode, 1 char != 1 byte. In fact, any encoding that's not Latin will have a problem. I guess you could put a warning on it: not for use for asian character sets. So what do you do if someone tries to insert such a string anyway? Perhaps a better approach is to vary the number of bytes used for the length. So one byte for lengths < 64, two bytes for lengths < 16384. Unfortunatly, two bits in the length are already used (IIRC) for other things making it a bit more tricky. -- Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/ > There are 10 kinds of people in the world, those that can do binary > arithmetic and those that can't.