我有一个包含数百万行但没有分区的现有数据库。我可以改变它来添加分区,但是,我想要添加分区的列包含JSON值,我需要先提取它。
ALTER TABLE api_backup_records
PARTITION BY RANGE(CAST(JSON_EXTRACT(custom_data, '$.customer_id') AS UNSIGNED))(
PARTITION cus10000 VALUES LESS THAN (10000),
PARTITION cus20000 VALUES LESS THAN (20000),
PARTITION cus30000 VALUES LESS THAN (30000),
PARTITION cus40000 VALUES LESS THAN (40000),
PARTITION cus50000 VALUES LESS THAN (50000),
PARTITION cus60000 VALUES LESS THAN (60000),
PARTITION cus70000 VALUES LESS THAN (70000),
PARTITION cus80000 VALUES LESS THAN (80000),
PARTITION cus90000 VALUES LESS THAN (90000),
PARTITION cusmax VALUES LESS THAN MAXVALUE)
我收到错误#1564 - 不允许使用此分区功能,我认为这是因为JSON_EXTRACT函数在分区中是不允许的。我尝试通过添加一个基于JSON_EXTRACT的生成值的新列来更改表,但是MongoDB不支持。
我想轻松搜索客户ID(客户ID位于custom_data列的JSON值上[这是一个自定义数据,因此我们需要将其保留为JSON,因为这将是一个动态列])通过分区记录。
非常感谢您的帮助。