Задать вопрос
iam_not_a_robot
@iam_not_a_robot

Как бы вы хранили дату, время?

Есть дата и 2 отметки внутри даты (начало и конец). Например 2015-11-10 с 10:00 до 16:00

Можно сделать 2 поля datetime и потратить 16 байт.

Можно сделать 2 поля timestamp и потратить 8 байт, но просто дата 2015-11-10 по полю timestamp не ищется, тогда придётся выбирать дату с помощью операторов < > не знаю насколько дольше будет выборка

Можно сделать 1 поле date и 2 поля timestamp, потрачу 11 байт, или 2 time потрачу 9 байт, зато удобно выбирать дату и время

Какой вариант оптимальный на ваш взгляд?

UP Если у вас есть какая-то информация или ссылки на тему сравнения скорости выборок по разным полям date, timestamp, datetime и т.д., то буду благодарен.
  • Вопрос задан
  • 250 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
А вы байты считаете потому, что ваша программа будет работать на холодильнике?
Или, может, диапазонов у вас будут триллионы?
Или количество выборок будет миллиард в день?

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

Условно говоря, планка оперативки сейчас стоит соразмерно часу работы программиста. Поэтому, если вы при проектировании проекта потратили на час больше времени и сделали "оптимизированное" но неудобное решение, поддержка которого будет съедать еще по часу в месяц - вы оказали проекту медвежью услугу.
Сразу скажу, что я не призываю писать неоптимизированный говнокод и закрывать дыры в нем наращиванием железа. Но то, о чем вы говорите, даже экономией на спичках не назвать.
Ответ написан
Комментировать
rutaka_n
@rutaka_n
softwere engineer
преждевременная оптимизация - антипаттерн.
Плюс ко всему БД обычно уже оптимизированы хорошо для выборок по стандартным типам данных.
Ответ написан
Комментировать
Mayzer
@Mayzer
Yes it is!
строкой в милисекундах:
$date = strtotime(date());
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы