быстрее?
Я не DB инженер, обычний java dev. =)
Вопрос и правда... неверный. Если вы хоть когда-нибудь задумывались как идет проверка уникальности, то понятно что надо сравнивать 2 значения. 8ми байтовое сравнивается за 1 CMP инструкцию на 64х битных процах, а VARCHAR во первых может храниться в TOAST'е, а во-вторых сравнивается как строка, а это 32 что-ли символа, которые сравниваются как строка, то есть это пару сотен тактов.
Это вопрос про bigint vs varchar в индексах?
да, теперь понятно =)
Осталось выяснить насколько влияют эти сравнения в реальных условиях на современных процессорах
Если вам не достаточно теоретического понимания что от процессора тут не зависит ничего, то проверяйте.
ну тут понятно что комперить 64 бита можно в 1 такт, а вот строка может иметь много символов, в один такт может не влезть =)
Один или десять тактов тут могут ничего не решить - надо смотреть совокупно
Влияют и сильно
давай посмотрим как именно?
Сравнение строк - тоже есть инструкция ж
она была актуальна на процессорах 8086 и я даже ее успешно сипользовал, а вот на 80286 стало уже не очень
Я цифр приводить не буду, потому что сейчас у меня их нет, а тесты мне делать откровенно лень. Но могу точно сказать что в последний раз у меня буквально в разы отличалось на приблизительно аналогичных типах данных.
так давай посмотрим-таки? вот я выше приводил ссылку на гист, где помярял bigint/varchar джоины на табличках с миллионом записей
Обсуждают сегодня