Как вы можете сгруппировать по части даты столбца отметки времени в MySQL и при этом использовать индекс по этому вопросу?
Конечно, вы можете использовать такие решения, как
select date(thetime) from mytable group by date(thetime)
однако этот запрос не сможет использовать индекс по времени, а вместо этого потребует временную таблицу, поскольку вы преобразуете столбец с помощью функции перед группировкой по ней.
+----+-------------+-------------+-------+---------------+-------------+---------+------+-------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+-------+---------------+-------------+---------+------+-------+----------------------------------------------+
| 1 | SIMPLE | mytable | index | NULL | thetime | 4 | NULL | 48183 | Using index; Using temporary; Using filesort |
+----+-------------+-------------+-------+---------------+-------------+---------+------+-------+----------------------------------------------+
Теоретически нет причин, по которым он долженне может использовать сканирование диапазона для индекса в этом столбце и не нуждается во временной таблице.Есть ли синтаксис, который может убедить оптимизатор запросов выполнить запрос, чтобы сделать это?