Does anyone have a best practices for efficiently storing md5 hash
values in MySQL? 

Since it is a 32 character string of hex numbers, I originally stored
them in a char(32) binary column. But that is wasted space (by a factor
of 2). And of course, these things add up, both in data files and
indexes.

Md5 hash        -- 16 bytes.
char(32) binary -- 32 bytes.
BIGINT          -- 8 bytes

My thought right now is to convert the md5 hash into two BIGINT numbers
and visa-versa.

High BIGINT = conv(left(md5,16),16,10)
Low BIGINT = conv(right(md5,16),16,10)

And reversing:

Md5 = concat(lpad(conv(high,10,16),16,'0'),lpad(conv(low,10,16),16,'0'))

I suppose there is some point (in terms of the number of rows) where
storing more efficiently outweighs the conversion functions, and I
assume that I'm past that point. Is there a better way to convert these?


Just a note: there is no 128-bit integer type and CONV() only works with
up to 64-bit 8-byte numbers anyway.

Sincerely,
Steven Roussey
http://Network54.com/?pp=e 




---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to