[英]Mysql partition - How to do list partitioning of a table that contains unique column?
[英]How to partition MySQL table by column that is not in the unique index
讓我們有一個簡單的產品表。 每個產品都有其唯一的 ID 和類別。 用戶經常按類別搜索,所以我想按類別划分產品。 一個分區中的每個類別,例如
我該怎么做? 因為當然我的 ID 列上有一個主鍵並且需要我的 ID 是唯一的。 在每個類別中都不是唯一的。
但是 partitiong 有這個限制,即“表上的每個唯一鍵都必須使用表分區表達式中的每一列”。
那么,這不是讓分區變得有點無用嗎? 或者我錯過了什么? 我應該怎么辦?
http://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations-partitioning-keys-unique-keys.html
訣竅是將字段category
添加到您當前的主鍵中。 (您的主鍵將仍然是主鍵)
然后,您可以按類別對表進行分區。
這是您可以使用的代碼:
ALTER TABLE `products` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` , `category` );
ALTER TABLE `products` PARTITION BY KEY(category) PARTITIONS 6;
如果您希望它真正唯一,請向 id 添加auto_increment
選項,並且在表中插入數據時不要指定 id 值。 id 將在插入時由數據庫服務器確定。
如有必要,更改字段名稱和鍵名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.