объединения в целочисленных столбцах более эффективны, чем объединения в varchar в Postgresql? - PullRequest
3 голосов
/ 03 июня 2011

Я слышал / читал предположение, что объединения в целочисленных столбцах более эффективны, чем объединения в столбцах varchar.Иногда я слышал, что это квалифицировано так: «объединения в целочисленных столбцах более эффективны, чем объединения в длинных столбцах varchar.»

может кто-нибудь прокомментировать, является ли любое утверждение истинным, и если да, некоторые из основных причин?

любые статьи или ссылки приветствуются и приветствуются.спасибо!

Ответы [ 3 ]

5 голосов
/ 03 июня 2011

Я не знаком с Postgresql, но я ожидаю, что это будет верно для любой базы данных по той простой причине, что сравнение целых чисел намного эффективнее, чем сравнение строк.База данных должна искать индекс по ключевому полю.Поиск по целочисленному индексу должен быть быстрее, чем поиск по строковому индексу.Мало того, что задействовано меньше данных, сравнение может быть выполнено молниеносно в одной операции ЦП, а не какое-то, вероятно, сложное сравнение строк, которое использует чувствительность к регистру и логику локализации.«Вы имеете в виду, имеет преимущество в скорости микросекунды над.Конечно, могут быть архитектурные соображения, которые означают, что создание объединения в строке в целом является лучшим решением для проектирования базы данных.Но в целом я избегаю присоединения к чему-либо кроме целых чисел.

1 голос
/ 01 декабря 2015

В этом сообщении обнаружилось, что объединения строк занимают на 35% - на 100% больше процессорного времени, чем целочисленные объединения (на SQL Server), в зависимости от размера столбца строки и от того, проиндексированы ли столбцы.Разница в затраченном времени была меньше (4% - 20%).Как отмечает автор, YMMV - вы должны проверить свой собственный случай, чтобы увидеть, если есть существенная разница.

1 голос
/ 03 июня 2011

Это правда, и потому, что во внутренних процессорах ЦП сравнения строк удивительно сложны.

...