
18.12.2007, 23:22
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
С нами:
10467746
Репутация:
4738
|
|
То hilkfild:
Есть предложение хранить в базе хэши не в виде строки типа char(32) а в виде char(16) используя функции кодирования хэша (перед занесением в базу) и декодирования (после извлечения из базы)
Выгоды: уменьшение базы, быстрее поиск по базе.
Вот сами функции кодирования и декодирования:
PHP код:
function code_hash($hash)
{
$n=0;
$hash_code="";
$l=strlen($hash)-1;
do
{
$code='0x'.$hash[$n].$hash[$n+1];
$hash_code.=chr(hexdec($code));
$n++;
}
while ($n++<$l);
return $hash_code;
}
PHP код:
function decode_hash($string)
{
$n=0;
$decode_hash="";
$l=strlen($string)-1;
do
{
$code=ord($string[$n]);
$decode_hash.=dechex($code);
}
while ($n++<$l);
return $decode_hash;
}
ЗЫ Открываются перспективы на экономичное хранение других популярных хэшей (MySQL - char(8) против char(16), MySQL5 - char(20) против char(40), и SHA-1 - char(20) против (40). у всех чарсет 0-9a-f
Кроме того на поле pass я так понял целесообразно использовать тип VARCHAR?
Последний раз редактировалось -=lebed=-; 18.12.2007 в 23:41..
|
|
|