用于地址表的MySQL分区方法

时间:2015-10-07 05:27:26

标签: mysql partitioning

我有一张包含1亿多个地址的表格。表结构是:

`id` int(11) NOT NULL AUTO_INCREMENT,
`address1` varchar(255) DEFAULT NULL,
`address2` varchar(255) DEFAULT NULL,
`city` varchar(255) DEFAULT NULL,
`state` varchar(255) DEFAULT NULL,
`zip` varchar(255) DEFAULT NULL,
`country` varchar(255) DEFAULT NULL,
`addressable_id` int(11) DEFAULT NULL,
`created_at` datetime DEFAULT NULL

在决定实施哪种类型的分区时,我需要帮助。我应该在创建日期使用RANGE分区,还是在id列上使用HASH分区,还是其他类型?

1 个答案:

答案 0 :(得分:1)

您看到多少个包含255个字符的邮政编码?你在用utf8吗?有多少个zipcodes有什么不是-ascii?

分区有助于提升效果。我从未见过HASH分区的用例,这种用例无法通过索引完成。

如果您要清除“旧”数据或进行二维查找,则RANGE可能很有用。

让我们看看您的疑问。并考虑一下您将使用的INDEX。特别想想“复合”索引。