Более быстрый способ выбора по дате MYSQL

Сейчас я использую:

MONTH(timestamp) = '7'AND YEAR(timestamp) = '2013'

Чтобы выбрать по дате, но мне сказали, что это очень неэффективный способ обойти это, особенно с большим объемом данных. Что такое более быстрый способ получения тех же результатов?

Благодарю.

3 ответа

Создайте индекс в timestamp а затем используйте:

where timestamp >= '2013-07-01' and timestamp < '2013-08-01'

Это будет использовать индекс и работать хорошо.

Вы создаете индекс как:

create index <your table="" name="">_timestamp on <your table="" name="">(timestamp);
</your></your>


Проблема в том, что она применяет функцию при каждом сравнении. Вы можете исправить это с помощью:

  1. Не вызывать функцию:

    where timestamp between date '2013-07-01' and date '2013-07-31'
  2. Другой способ: создать функциональный индекс:

    create index ******* on myTable(MONTH(timestamp),YEAR(timestamp));

Для справки: возможно ли иметь функциональный индекс в MySQL?


Найдите диапазон дат, включая 7/1 и исключая 8/1.

WHERE timestamp >= '2013-07-01' and timestamp < '2013-08-01'

Mysql автоматически автоматически анализирует дату с YYYY-MM-DD foramt.

licensed under cc by-sa 3.0 with attribution.