按键的Mysql分区只显示1个分区

时间:2016-03-23 15:01:05

标签: mysql

我有一个场景,比如我有一个包含不同类别的产品表。因此查询将特定于类别。所以我想如果我可以将每个类别分开作为每个分区,它将提高性能。

DROP TABLE IF EXISTS products;

CREATE TABLE products (
 id int(11) AUTO_INCREMENT,
 pname varchar(11) default '',
 category char(10) default 'general',
 PRIMARY KEY thisKey (id,category)
)
PARTITION BY KEY (category)
;

我从两个类别加载数据。但它只显示一个分区:

mysql> EXPLAIN PARTITIONS SELECT * FROM products\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: products
   partitions: p0
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 3
        Extra: 

有人可以帮助我为什么没有两个分区,或者我为这个要求选择了错误的分区类型?

1 个答案:

答案 0 :(得分:2)

在按分区键分区后(对于5个分区)

,您缺少分区数
PARTITION BY KEY (category)
PARTITIONS 5;

您使用分区的最佳策略吗?取决于。

您有很多具有相似产品数量的类别,并且还经常添加新类别。 BY KEY或BY HASH是不错的选择,使用此选项,产品将在分区数量上随机分布

另外,对于这种分区,你没有保证插入两个不同类别的产品,它们进入不同的分区(散列键可能是相同的)

您拥有固定数量的类别,每个类别的产品数量之间存在很大差异。可能BY LIST是你的朋友,你选择哪个类别进入每个分区。

您是否拥有相对较少数量的产品,或者您需要在查询中混合多个类别的产品?可能你不需要分区。