- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Мне так нравяться такие запросы :)
Вы реально не знаете какая сейчас дата и хотите вычислить её для каждой строки из миллиона в табличке? Я понимаю когда NOW используют на инсертах, но где либо еще это выглядит как минимум странно, а во воторых отнимает кучу ресурсов особенно на больших выборках.
Еще я в вашем запросе не увидел слово LIMIT. Вы точно хотите все строки до текущей даты получить с миллионной таблички?
Короче оптимизация, оптимизация оптимизация
Мне так нравяться такие запросы :)
Вы реально не знаете какая сейчас дата и хотите вычислить её для каждой строки из миллиона в табличке?
Про отложенную публикацию не слышали? :)
NOW() в таком виде вычисляется единожды, в момент создания запроса, а не для каждой строчки.
;14925131']NOW() в таком виде вычисляется единожды, в момент создания запроса, а не для каждой строчки.
Unfortunately, such queries are not cached by MySQL.
Unfortunately, such queries are not cached by MySQL.
А при чём тут кеширование запросов? Речь шла об "вычислить её для каждой строки".
NOW() returns a constant time that indicates the time at which the statement began to execute.
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_now
;14925131']
NOW() в таком виде вычисляется единожды, в момент создания запроса, а не для каждой строчки.
Это что то новенькое ))) Всё это так, пока вы юзаете NOW в секции SELECT, как в примерах из документации по вашей ссылке, как только вы юзаете его в секции WHERE правила меняються. Вы можете потестить на досуге если что. А все дело в том, что он возвращает системное время до доли секунды, тем самым не попадая в кэш ну уж никак и БД приходится вычислять все время. Если уж так нужна дата, то для этого есть CURDATE(), а еще лучше подставить туда скалярное значение.
Это что то новенькое ))) Всё это так, пока вы юзаете NOW в секции SELECT, как в примерах из документации по вашей ссылке, как только вы юзаете его в секции WHERE правила меняються. Вы можете потестить на досуге если что. А все дело в том, что он возвращает системное время до доли секунды, тем самым не попадая в кэш ну уж никак и БД приходится вычислять все время. Если уж так нужна дата, то для этого есть CURDATE(), а еще лучше подставить туда скалярное значение.
Вы документацию-то пробовали читать? Или у вас только своя вольная интерпретация имеется?
Ещё раз приведу эту же строчку:
"NOW() returns a constant time that indicates the time at which the statement began to execute."
И по-русски дословно:
"NOW() возвращает временнУю константу, указывающую, в какой момент времени начал выполняться запрос."
Вот вам пример, который выводит одну строку из таблицы, хотя по вашему утверждению должен выводить две.
И не вводите людей в заблуждение!
[umka], Вы сначала почитайте про порядок выполнения запросов select
Если вы думаете что ваш SLEEP реально тормозит выборку перед WHERE вы сильно ошибаетесь. Сначала собирается коллекция на основе WHERE, потом фильтруеться по HAVING и уже после этого выбираются поля (срабатывает ваш SLEEP)
Сначала собирается коллекция на основе WHERE, потом фильтруеться по HAVING и уже после этого выбираются поля (срабатывает ваш SLEEP)
Вы уж определитесь, NOW() выполняется для формирования выборки или для каждой строки.
Вы реально не знаете какая сейчас дата и хотите вычислить её для каждой строки из миллиона в табличке?