簡體   English   中英

如何按不在唯一索引中的列對 MySQL 表進行分區

[英]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 將在插入時由數據庫服務器確定。

如有必要,更改字段名稱和鍵名稱。

文檔:
分區類型
KEY分區

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM