MySQL запрос, чтобы получить минимальные данные поля с отметкой времени, равной текущей дате - PullRequest
0 голосов
/ 08 марта 2012

У меня следующий запрос:

SELECT MIN(myColumn) as myColumn
FROM myTable
WHERE date(time_stamp) = curdate() AND id = 1;

В настоящее время это работает, но очень медленно, когда в базе данных присутствует много данных. Я попробовал, используя это:

SELECT MIN(myColumn) as myColumn
FROM myTable
WHERE time_stamp >= (now() - interval 1 day) AND id = 1;

Этот запрос довольно быстрый, но проблема в том, что я получаю данные за последние 24 часа, а не только за текущий день с 12:00. Я предполагаю, что преобразование date () сильно его замедляет. Есть ли лучший способ сделать первый запрос, чтобы ускорить его?

Ответы [ 2 ]

1 голос
/ 08 марта 2012

У меня не установлен MySql для проверки параметров, но попробуйте time_stamp> = curDate () или измените curDate () для форматирования как time_stamp.

1 голос
/ 08 марта 2012

Простой способ может быть

SELECT MIN(myColumn) as myColumn 
FROM myTable 
WHERE time_stamp between date(now()) and date(now() + interval 1 day) AND id = 1; 

или аналогичный.

...