MySQL: использование DATETIME в качестве первичного ключа - PullRequest
1 голос
/ 17 февраля 2011

В моей базе данных будет храниться большое количество точек данных, поэтому в качестве первичного ключа я использую BIGINT без знака.

Имеет ли смысл когда-либо использовать объект DATETIME в качестве первичного ключа?

Спасибо,

Ответы [ 5 ]

15 голосов
/ 17 февраля 2011

Да, если для курса имеет смысл указывать дату / время как ключ или часть ключа, если вам необходимо однозначно идентифицировать отдельные точки или периоды времени.Я не могу сказать, относится ли это к вашему сценарию, но, как правило, нет фундаментальной причины, по которой ключи не могут быть основаны на времени - это делает практически любое хранилище данных.

4 голосов
/ 17 февраля 2011

Нет, потому что нельзя гарантировать его уникальность.Палка с BIGINT.Вы можете поместить в DateTime хороший индекс для запросов, и он будет достаточно хорошим.

3 голосов
/ 17 февраля 2011

Имеет смысл, если ваши данные поступают из одного упорядоченного по времени набора.Скажем, запись финансовых транзакций.Если у вас есть несколько точек данных, которые естественным образом возникали в разные моменты времени, но имеют одинаковую временную отметку из-за округления, измените младшие биты, чтобы различать их.проблематично в MySQL, чем в других базах данных, потому что временные метки хранятся с точностью до 1 секунды.

3 голосов
/ 17 февраля 2011

Это не имеет смысла, поскольку вы будете ограничены одной записью в секунду без какой-либо реальной причины для этого.

2 голосов
/ 17 февраля 2011

Если у вас есть несколько наблюдений в секунду, это не удастся. По этой причине, вероятно, лучше не делать этого, если только вы не можете гарантировать, что никогда не будет больше одного очка в секунду.

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