Mysql Partition: как бороться с месяцем и хэшем - PullRequest
3 голосов
/ 27 сентября 2010

У меня есть конкретный вопрос о подразделении mysql с использованием хэша в столбце даты / даты и времени . Я разделил по site_id и теперь хочу разделить по месяцам (от 1 до 12), поэтому номер раздела фиксирован во времени (sp_dec, sp_jan, ...)

Структура таблицы текущего среза (столбцы и другие разделы):

CREATE TABLE IF NOT EXISTS `email` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `sent_date` datetime NOT NULL,
  `site_id` tinyint(4) NOT NULL,
  PRIMARY KEY (`id`,`site_id`,`sent_date`),
) ENGINE=InnoDB  DEFAULT CHARSET=latin1
PARTITION BY LIST (site_id)
SUBPARTITION BY HASH (MONTH(sent_date)) (
PARTITION p0 VALUES IN (1,3,4) (
  SUBPARTITION dec0 ENGINE = InnoDB,
  SUBPARTITION jan0 ENGINE = InnoDB,
  SUBPARTITION feb0 ENGINE = InnoDB,
  SUBPARTITION mar0 ENGINE = InnoDB,
  SUBPARTITION apr0 ENGINE = InnoDB,
  SUBPARTITION may0 ENGINE = InnoDB,
  SUBPARTITION jun0 ENGINE = InnoDB,
  SUBPARTITION jul0 ENGINE = InnoDB,
  SUBPARTITION aug0 ENGINE = InnoDB,
  SUBPARTITION sep0 ENGINE = InnoDB,
  SUBPARTITION oct0 ENGINE = InnoDB,
  SUBPARTITION nov0 ENGINE = InnoDB)
);

Я видел, что я не должен использовать функцию МЕСЯЦ для обрезки. В большинстве примеров Range используется для управления месячными проблемами, но он не доступен в подразделе ...

Во-первых, мне не удалось использовать datetime, поскольку my_date = '2010-09-27' не удалось из-за временной части, поэтому мне нужно использовать между или> = tips. При этом сокращение больше не применяется, поэтому используются все разделы!

Во-вторых, я разделил дату и время на два столбца, и теперь my_date = '2010-09-27' работает нормально. Тем не менее, проблема интервала все еще здесь, и я не использую мои разделы.

EXPLAIN PARTITIONS SELECT * FROM `email` WHERE sent_date >='2010-09-27'
AND sent_date<'2010-09-28';

EXPLAIN PARTITIONS SELECT * FROM `email` WHERE
sent_date BETWEEN '2010-09-20' AND '2010-09-27';

Примечание: у меня просто есть тестовые данные, поэтому я могу легко изменить поле даты или разделы.

Как разделить по месяцам, используя хэш или ключ, также работая с интервалами?

Спасибо за чтение:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...