В mysql для быстрого поиска по дате лучше использовать timestamp как int или как date (datetime)?

В mysql для быстрого поиска по дате лучше использовать timestamp как int или как date (datetime)?
Для больших объемов данных!
  • Вопрос задан
  • 488 просмотров
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега PHP
Для скорости абсолютно без разницы, а для хранения даты и времени надо использовать предназначенные для этого типы данных
Ответ написан
php666
@php666
PHP-макака
Сделал базу test
CREATE TABLE `test` (
  `name` varchar(255) NOT NULL,
  `date_int` int(11) UNSIGNED NOT NULL,
  `date_time` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `test`
  ADD KEY `date_int` (`date_int`),
  ADD KEY `date_time` (`date_time`);
COMMIT;


заполнил значениями дат, от 1970-01-01 00:00:01 до 1970-01-05 11:02:29, с разницей 1 секунда, итого вышло 1 603 869 строк (далее php умер и мне лень было настраивать Maximum execution time).

Разницы вообще нет, если искать точное соответствие вплоть до секунды:
SELECT * FROM `test` WHERE date_int = UNIX_TIMESTAMP('1970-01-03 12:12:12')

id 	select_type 	table 	type 	possible_keys 	key 	key_len 	ref 	rows 	Extra 	
1 	SIMPLE 	test 	ref 	date_int 	date_int 	4 	const 	2 	NULL

EXPLAIN SELECT * FROM `test` WHERE date_time = '1970-01-03 12:12:12'

id 	select_type 	table 	type 	possible_keys 	key 	key_len 	ref 	rows 	Extra 	
1 	SIMPLE 	test 	ref 	date_time 	date_time 	5 	const 	2 	NULL


Так что фанатик прав, нехрен для даты использовать числа.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Nc_Soft
Все равно, и то и то 4 байта.
Но timestamp мне кажется более подходящим из-за более удобных запросов на интервалы.
Ответ написан
Adamos
@Adamos
Для быстрого поиска по большим объемам данных надо использовать - индексы.
Тогда формат самих данных будет влиять только на время вставки.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы