У меня есть таблица размером не менее 5 ГБ и будет составлять 10 ГБ за пару лет. Одним из столбцов является поле даты, которое используется во многих запросах. Его можно использовать как Date, Year, Yearmonth и Month для фильтрации и группировки на основе пользовательской настройки в интерфейсе.MySQL Дата Расчетные индексы
WHERE yearmonth >= '201504' AND yearmonth <= '201506'
WHERE year > 2014
GROUP BY year, month ORDER BY year, month
SELECT MONTH(date)
Каков наилучший способ индексировать на год, месяц, годМесяц для запросов, чтобы иметь оптимальную скорость, не прибегая для создания этих вычисляемых полей в самой таблице.
шоу схемы и примеры данных – Drew
CREATE TABLE монитор ( 'country' символ (3), ' date' дата , 'year' SMALLINT (4), ' tvprogramfromtime' время, 'tvprogramtotime' время, ' adstarttime' время, 'timesegment' Int (1), ' bookingagent' INT (10), 'distributor' int (8), 'sector' int (3), 'category' int (3), ' product' int (10), 'brand' int (8), ' subbrand' int (8), ) ENGINE = MyISAM DEFAULT CHARSET = utf8; –
ALTER TABLE monitor ADD KEY 'country' (' country'), ADD KEY 'date' (' date'), ADD KEY 'year' (' year'), ADD KEY 'category' (' category'), ADD KEY 'brand' (' brand'), ADD KEY 'media' (' media'), ADD KEY 'subbrand' (' subbrand'), ADD KEY 'product' (' product'), ADD KEY 'sector' (' sector') –