PostgreSQL - Лучше присоединиться с полем TIMESTAMP, или я должен преобразовать в unix_timestamp (int), чтобы присоединиться? - PullRequest
0 голосов
/ 03 марта 2020

Я создаю объединение, и как часть этого объединения я использую поле метки времени для объединения. С точки зрения производительности, лучше ли мне конвертировать обе временные метки в unix_timestamp, чтобы при объединении использовалось целое число? Или мне лучше оставить все как есть.

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Исходя из приведенного выше комментария Лошади, внутренне отметка времени Postgres timestamp и цифра c UNIX может быть реализована очень похожим образом. Между ними не то, что отметка времени UNIX может представлять для вас проблемы с представлением, поскольку в ваших отчетах вам часто приходится преобразовывать ее в формальную отметку времени на основе даты и времени. Таким образом, использование правильного timestamp может иметь преимущества с точки зрения отчетности.

1 голос
/ 03 марта 2020

Я бы не ожидал заметной разницы в производительности в зависимости от того, является ли тип столбца timestamp или integer. Как прокомментировал a_horse_with_no_name, временная метка в любом случае внутренне сохраняется как целое число.

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

Предикат, использующий функции, делает запрос не-SARGable, что означает, что база данных не может использовать индекс, даже если он доступен:

extract(epoch from t1.timestamp) = extract(epoch from t2.timestamp)

Вместо этого вы хотите использовать значения столбца напрямую:

t1.timestamp = t2.timestamp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...