Допустим есть таблица:
statistics
date (int), user_id(int), param1(int), param2(int), param3(int) ...
Настроены индексы:
uniq_user_id_date
fk_user_id
Делаем примерно такую выборку:
$sql_date_format = '%Y-%m';
// $sql_date_format = '%Y-%m-%u';
// $sql_date_format = '%Y-%m-%d %H:00:00';
// ...
$statistics_obj = DB::select()
->select(
['date', 'date'],
[DB::expr('DATE_FORMAT(FROM_UNIXTIME(`date`), :date_format)', [
':date_format' => $sql_date_format,]), 'date_formatted',],
[DB::expr('SUM(`param1`)'), 'param1']
)
->from(ORM::factory('Statistic')->table_name())
->where('user_id', '=', $user->id)
->and_where('date', 'BETWEEN', [$this->_start, $this->_end])
->group_by('date_formatted')
->as_object()
->execute();
Предположим, что записи в таблице содержат поминутную статистику для каждого пользователя. Какова вероятность, что такие выборки будут медленными, если в таблице будут миллионы записей?
UPD: Эта информация будет использована для построения графиков (живая статистика в ЛК). Графики и таблицы (по часам/по неделям/по месяцам/по годам)