У меня есть огромная таблица с чем-то вроде 8 300 000 строк (никогда не будет редактироваться или удаляться).
Мой первый столбец выглядит примерно так P300-4312B_X16_S
, и запись не уникальна, поэтому я использую в этом поле обычный ИНДЕКС.
Однако MySQL намного быстрее, используя двоичное поле вместо varchar, поэтому я кодирую свой INDEX в MD5, используя BINARY(16)
для хранения данных.
Этим утром я впервые начал использовать CRC32 и увидел, что CRC32 можно вывести в виде шестнадцатеричной строки, используя 8 символов.
Мой вопрос: если я использую CRC32 вместо MD5, это будет быстрее. Однако, когда CRC32 пройден, скажем, 2 000 000 уникальных значений, результат будет уникальным, или, может быть, когда-нибудь у меня будет дважды одна и та же строка для двух разных строк? Я спрашиваю об этом, потому что результат имеет длину всего 8 символов (32b) вместо 32 (128b), как у MD5.
Спасибо.
However, MySQL is WAY faster using a binary field instead of a varchar so I encode my INDEX in MD5 using BINARY(16) to store the data.
Похоже, ваши индексы не работают. Индексация поVARCHAR
должна работать нормально.. - person Brendan Long   schedule 02.10.2012