Я слышал слух, что при вставке двоичных данных (файлов и тому подобного) в MySQL вы должны использовать bin2hex() и отправлять ее в виде HEX-кодированного значения, а не просто использовать mysql_real_escape_string в двоичной строке и использовать ее.
// That you should do
$hex = bin2hex($raw_bin);
$sql = "INSERT INTO 'table'('file') VALUES (X'{$hex}')";
// Rather than
$bin = mysql_real_escape_string($raw_bin);
$sql = "INSERT INTO 'table'('file') VALUES ('{$bin}')";
Это предположительно по причинам производительности. Что-то связанное с тем, как MySQL обрабатывает большие строки, и как он обрабатывает HEX-кодированные значения
 Однако мне трудно это подтвердить. Все мои тесты показывают точный опозит; что метод bin2hex работает на ~ 85% медленнее и использует на ~ 24% больше памяти. 
 (Я тестирую это на PHP 5.3, MySQL 5.1, Win7 x64 - используя очень простой цикл вставки.)
Например, этот график показывает использование частной памяти процессом mysqld во время выполнения тестового кода:
  
 
(источник: advefir.com)
У кого-нибудь есть какие-либо объяснения или источники, которые бы прояснили это?
Благодарю.
