嗨,我有一个表,其中包含超过200万条记录。我想使用一个名为 venue_id
这将加快我创建的一些报告的速度。
下面是我试图划分的表结构的图片。
表结构
我已尝试运行以下代码:
ALTER TABLE wifi_client_connection
PARTITION BY KEY(venue_id)
PARTITIONS 500;
但我一直有个错误: A PRIMARY KEY must include all columns in the table's partitioning function
我研究过这个错误,我认为是因为 venue_id
不是唯一的,因为它是外键。
1条答案
按热度按时间lxkprmvk1#
简而言之:不要分区。而是处理查询。
长话短说:
注:
FOREIGN KEYs
不允许进入PARTITIONed
table。但是,它们生成的索引是允许的。要绕过错误消息,只需将pk改为
更好的索引集是用
别对我有任何期望
(5)
在INT(5)
. 全部INTs
是4字节整数。看到了吗SMALLINT
; 它是2个字节(缩小表的大小可能有助于提高性能。给我们看一个缓慢的报告;我们可以解释如何在没有分区的情况下加速它。