mysql的分区,hash分区探讨
我先说说我的项目需求,我要根据手机号码去查找联系人的信息,手机号码找不到的话再根据邮箱号去查找联系人的信息,这2者都找不到则返回空的信息就行了,我现在的联系人信息表里面有1500万条数据,虽然我在手机号码字段和邮箱字段加了索引,但是查询速度仍然非常慢,所以现在就想到了mysql表的分区。我想到的方法是:这个表不要主键了,主键通过手机号码和邮箱的组合列去分区,hash方法分区,不知道思路是否正确,下面是分区sql语句,各位大神给瞅瞅呗
CREATE TABLE IF NOT EXISTS `temp_fen` (
`custname` varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT '客户姓名',
`custemail` varchar(60) COLLATE utf8_unicode_ci NOT NULL COMMENT '客户邮箱',
`custtel` varchar(30) COLLATE utf8_unicode_ci NOT NULL COMMENT '客户电话',
`provice` varchar(20) COLLATE utf8_unicode_ci NOT NULL COMMENT '省份',
`city` varchar(20) COLLATE utf8_unicode_ci NOT NULL COMMENT '市',
`county` varchar(20) COLLATE utf8_unicode_ci NOT NULL COMMENT '县',
KEY `custemail` (`custemail`),
KEY `custtel` (`custtel`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='联系人表' AUTO_INCREMENT=1 partition by hash(custemail,custtel) partitions 5;
因为我看着以前的hash分区语句都是hash(id),类似于这种的,按照一个列分区的,而我的是按照2列分区hash(custemail,custtel),如果感觉我的思路不对,各位也可以说说正确思路,谢谢各位了!