Оптимизация запроса - MySQL (219525)

Узнай цену своей работы

Формулировка задачи:

Идет поиск по полю date_added(TIMESTAMP)
... WHERE DATE(date_added) = '2017-09-02'
Как и предполагал добавление индекса для этого поля ничего не дало, EXPLAIN говорит что для поиска используются имеющиеся все строки. Что можно сделать для оптимизации, поле должно содержать дату и время
Придумал!
SELECT * FROM `table` WHERE `date_added` = DATE_FORMAT('2017-09-02', '%Y-%m-%d %H:%i:%s')
#или
SELECT * FROM `table` WHERE `date_added` = NOW()

Решение задачи: «Оптимизация запроса»

textual
Листинг программы
SELECT * FROM `table` WHERE `date_added` >= DATE_FORMAT('2017-09-02', '%Y-%m-%d %H:%i:%s')  - INTERVAL 1 DAY

Объяснение кода листинга программы

  1. В данном коде выполняется запрос к таблице table.
  2. В условии WHERE фильтрация записей выполняется по полю date_added.
  3. Сравнение выполняется на предмет большей или равной даты, заданной в формате '2017-09-02'.
  4. В качестве оператора сравнения используется функция DATE_FORMAT с аргументом '%Y-%m-%d %H:%i:%s', которая преобразует строку '2017-09-02' в формат даты и времени.
  5. Значение переменной INTERVAL равно 1 DAY.
  6. Знак - используется для задания разности между датой и указанным интервалом времени.
  7. Результатом запроса будет выборка всех записей из таблицы table, удовлетворяющих условию.

Оцени полезность:

7   голосов , оценка 4.143 из 5