Первое выражение, которое использует DATEDIFF()
, требует применения функции даты к каждой строке до может произойти фильтрация.
Напротив, второе выражение не подразумевает такой предварительная обработка: CURDATE() - INTERVAL 3 DAY
вычисляется только один раз, а затем напрямую сравнивается со значением publish_date
. Этот предикат может использовать индекс в столбце даты. Это правильный способ сделать это.
С технической точки зрения мы говорим, что второй предикат - sargable , а первый - нет: это означает Search ARGument ABLE
Практическое правило: не применяйте функции к столбцу, который вы фильтруете, если у вас есть способ обойти.