Всем привет! Всё вроде бы очевидно, но хочу перестраховаться. Тип поля - "TIMESTAMP" с атрибутом "ON UPDATE CURRENT_TIMESTAMP". Раньше обновлял дату обычным способом: Код (PHP): UPDATE `tbl_name` SET `ts_field` = NOW() WHERE `some_id` = ? Сейчас "изобрел колесо" и делаю это так: Код (PHP): UPDATE `tbl_name` SET `ts_field` = NULL WHERE `some_id` = ? По понятным причинам работает быстрее, но нет ли в таком способе подводных камней?
не об этом спрашивают. внимательнее. с чего бы это работает быстрее? увидеть что поле пустое и получить дефолтное значение вызовом функции или получить значение вызовом функции. может быть функции немного разные точки входа имеют, но имхо там погрешность не такая чтоб говорить "по понятным причинам быстрее". есть, но не в таком виде.
По крайней мере, я протестировал оба варианта и, пусть небольшой прирост без функции, но есть (-0,1275 сек на 500К записях). В какой-то другой ситуации, я бы сам назвал это экономией на спичках, но проект, над которым работаю, а точнее занимаюсь оптимизацией уже существующего, достаточно нагруженный, при этом был написан очень похабно, жутко тормозил и теперь, во время его "лечения" стараюсь выкраивать доли секунд в любом месте, где это можно. Если можно, то в двух словах... чтоб врасплох не застало
Дети, никогда не делайте автоматическое обновление даты в бд на апдейте строки =) Не дай божэ вам там что-то потом где-то невовремя поменять или переименовать или переприсвоить... Всем датам кранты в один момент.