【发布时间】:2015-04-08 07:39:16
【问题描述】:
听起来可能很相似,但是,我正在对某些表进行分区...该表看起来像
mysql> DESC 商店; +--------------------+-------------+------+-----+-- -----------------+--------------+ |领域 |类型 |空 |钥匙 |默认 |额外 | +--------------------+-------------+------+-----+-- -----------------+--------------+ |店铺编号 |整数(255) |否 |优先级 |空 | | |店铺名称 | varchar(50) |是 | |空 | | | SHOP_CREATED_DATE |时间戳 |否 | | CURRENT_TIMESTAMP |在更新 CURRENT_TIMESTAMP | +--------------------+-------------+------+-----+-- -----------------+--------------+ 3 行一组(0.00 秒)
所以我有搜索功能,人们只能按商店名称搜索,所以表有大约 100 万条记录,所以我想按字母顺序对商店名称进行 RANGE 分区,但我不能这样做,因为我有主键 shop_id 和商店名称可以相同。 ..并得到错误
错误 1503 (HY000):主键必须包含 表的分区函数
解决方案:
ALTER TABLE SHOPS ADD CONSTRAINT T UNIQUE (SHOP_ID,SHOP_NAME);
并进行分区...我不能这样做,因为它不能确保 shop_id 是唯一的(主键)
【问题讨论】:
-
阅读这部分文档:dev.mysql.com/doc/refman/5.7/en/…。特别是,“表上的每个唯一键 [和主键] 都必须使用表的分区表达式中的每一列”
-
所以我不能在商店桌子上做分区...???有没有其他方法可以确保商店 id 唯一
标签: mysql partitioning