Чтобы не быть голословным...
Misha v.3 01.02.2003 16:41
берем упомянутые три варианта реализации:
1. выбор по диапазону дат
2. использование функций month + year
3. like
и делаем explain. тестировал только что с базой этого форума (тут есть поле dt_published, на нем есть индекс).
Результаты:
1. type = type, using index, using key, rows = 1491
2. type = ALL, rows = 12425
2. type = ALL, using index, rows = 12425
как видим, поиск по диапазону (при наличии индекса) - самый эффективный вариант. month & year - самый плохой (и тут оно понятно, т.к. для КАЖДОЙ записи в таблице будут вычисляться значения этих функций и потом будет производиться сравнение с константами)
вариант в like лучше, т.к. mysql даже умудрился использовать тут индексы, но все равно он сильно проигрывает выбору по диапазону...