Если говорить о фактической производительности сравнения строк с не-числами с плавающей запятой, то в этом случае любой размер без знака и со знаком не имеет значения. На самом деле размер - это настоящая разница в производительности. Будь то 1 байт + (до 126 байт) по сравнению с 1,2,4 или 8-байтовым сравнением ... очевидно, что non-float меньше, чем строки и float, и, следовательно, более удобны для процессора при сборке.
Сравнение строки со строкой на всех языках происходит медленнее, чем то, что ЦП может сравнить в 1 инструкции. Даже сравнение 8-байтового (64-битного) на 32-битном процессоре все равно быстрее, чем VARCHAR (2) или больше. * Опять же, посмотрите на созданную сборку (даже вручную). Для сравнения char по char требуется больше инструкций, чем от 1 до 8 байтов CPU numeric.
Насколько быстрее? зависит также от объема данных. Если вы просто сравниваете 5 с «audi» - а это все, что есть в вашей БД, результирующая разница настолько минимальна, что вы никогда ее не увидите. В зависимости от ЦП, реализации (клиент / сервер, веб / скрипт и т. Д.) Вы, вероятно, не увидите его, пока не проведете несколько сотен сравнений на сервере БД (возможно, даже пару тысяч сравнений, прежде чем это станет заметным).
- Чтобы аннулировать некорректный спор о сравнении хешей. Большинство алгоритмов хеширования сами по себе медленные, поэтому вы не получите выгоды от таких вещей, как CRC64 и менее. Более 12 лет я разрабатывал алгоритмы поиска для поисковых систем по нескольким округам и 7 лет для кредитных бюро. Все, что вы можете сохранить в числовом формате, тем быстрее ... например, номера телефонов, почтовые индексы, даже валюта * 1000 (хранение), валюта div 1000 (извлечение) быстрее, чем DECIMAL для сравнений.
Ozz