Создать индекс на результат работы функции в MySQL

WBS

Новичок
Есть поле DATE. Предполагается осуществлять выборки и сортировки по значению года и/или месяца.
Вопросы такие:

1. Возможно ли создание нового индекса не на конкретное поле, а на результат работы функции (например, YEAR(date))? Подозреваю что невозможно.

2. Есть ли смысл создать два избыточных поля (year и month) для ускорения работы?


P.S.
Подобное обсуждение я нашел на форуме oszone.net ("индекс по выражению"). Но хотелось бы послушать мнения и с этого форума :).

В Oracle возможность создавать индексы по функциям есть ("Индексы по Функциям", в эффективности их использования можно убедиться, ознакомившись с таблицей после слов "Итак, мы получили").
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума

fixxxer

К.О.
Партнер клуба
Мне в mysql-е этого не хватает, наверное, больше всего.

(2), да, имеет смысл. Можно триггером заполнять.
 
  • Like
Реакции: WBS

Mols

Новичок
Насчет поля с годом вполне нормально будут работать индексы при запросе вида
PHP:
SELECT ... FROM ... WHERE your_date_field   BETWEEN "2011-01-01" AND  "2011-12-31"
Вот удобно ли это будет... тут надо по месту смотреть.
 

Mols

Новичок
ну что груп бай? Понятно, что груп бай по YEAR(date) это функция.
А если челу надо
PHP:
.... WHERE  YEAR(date)  = '2011'  GROUP by other_field
То тот же ренж нормально отработает.
это и значит "смотреть по месту" в общем то. ))
 
Сверху