У меня есть таблица MySQL MyISAM с примерно 400 миллионами строк данных о ценах (данные 7 ГБ + индекс 9 ГБ) с 3 столбцами:
CREATE TABLE `prices` (
`ts` datetime NOT NULL,
`id` int(10) unsigned NOT NULL,
`price` double NOT NULL,
PRIMARY KEY (`ts`,`instrid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1$$
Количество различных id
с (я думаю, что количество элементовслово) равно ~ 500, и для большинства интересующих временных интервалов, в этих временных интервалах мощность id
меньше ~ 20 (поэтому между 1 и 2 марта существует только около 20 разных идентификаторов).
Запросы почти исключительно имеют форму:
select ts, price from prices where ts between {t1} and {t2} and id = {id}.
Кажется, что некоторые индексы должны ускорить процесс.
Будет ли объединенный индекс на ts
и id
или отдельные индексы на ts
и id
лучше?Какой-то третий вариант?Я также был бы признателен за рекомендации, где я мог бы узнать, как ответить на этот вопрос для себя.
Подойдет ли другой тип таблицы (InnoDB?) Для моих целей?