nikitasius
@nikitasius

Фиксирован ли UNIX_TIMESTAMP в пределах INSERT'а?

Постоянно ли значение unix_timestamp в пределах одного (пусть и огромного) insert'а?

Я провел тест:
таблица
CREATE TABLE `test_UNIX_TIMESTAMP` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`datefrom` INT(11) NULL DEFAULT NULL,
	PRIMARY KEY (`id`)
)


Далее insert вида:
insert into test_UNIX_TIMESTAMP (datefrom) values
(UNIX_TIMESTAMP())
,(UNIX_TIMESTAMP())
,(UNIX_TIMESTAMP())
....много много
,(UNIX_TIMESTAMP());


результат: Affected rows: 106 400 Найденные строки: 0 Предупреждения: 0 Длительность 1 query: 20,062 sec.
20 секунд, так как сервер удаленный.

Затем:
select distinct(datefrom) from test_UNIX_TIMESTAMP;

вернул мне всего лишь один результат.

Я решил, что 100к мало, обнулил таблицу:
Affected rows: 1 170 400 Найденные строки: 0 Предупреждения: 0 Длительность 1 query: 00:03:51

Далее по новой:
select distinct(datefrom) from test_UNIX_TIMESTAMP;

И всего один результат.

Судя по моим тестам UNIX_TIMESTAMP фиксирован. Но в то же время сервер подождал пока получит пакет, и исполнил его и сервер весьма мощный. Поэтому вставкой 1 миллиона инсертов фикс значения UNIX_TIMESTAMP не доказать.

Кто может привести некие доводы на основе документации или выдержек (пусть с того же stackoverflow) что UNIX_TIMESTAMP вычисляется всего 1 раз для инсерта и далее просто дублируется.
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
@neol
Functions that return the current date or time each are evaluated only once per query at the start of query execution. This means that multiple references to a function such as NOW() within a single query always produce the same result.

dev.mysql.com/doc/refman/5.5/en/date-and-time-func...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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