【问题标题】:SQL: Partition by Column ValueSQL:按列值分区
【发布时间】:2016-10-14 13:49:36
【问题描述】:

我有一个包含 2000 万行的 MySQL 表。查询此数据库花费了太多时间。数据库格式如下:

Column    Column   Column   Sector

data      data     data     Retail
data      data     data     Utility
data      data     data     Retail
data      data     data     Insurance
data      data     data     Retail
data      data     data     Agriculture
data      data     data     Agriculture
data      data     data     Retail

我希望能够按扇区对数据库进行分区。这应该会提高指定扇区的查询的速度。我尝试了以下方法,但它不起作用。我哪里错了?

Alter table 'technical' partition by values in `sector`

【问题讨论】:

  • @GordonLinoff 我已经看过了,但作为初学者,我不确定该使用哪个。
  • 由于您的表已经包含数据..您的alter语句将不起作用..最好在您自己创建表时创建分区..更简单的步骤之一是步骤1:创建使用包含分区子句的 语法从旧表中创建新的分区表 第 2 步:删除或重命名旧表 第 3 步:将第 1 步中创建的表重命名为已删除表的名称。

标签: mysql sql


【解决方案1】:

https://dev.mysql.com/doc/refman/5.7/en/partitioning-types.html

从这些分区类型中,我认为 LIST COLUMNS 分区将是您的最佳选择。从这里阅读有关它的更多详细信息..

https://dev.mysql.com/doc/refman/5.7/en/partitioning-columns-list.html

你的代码应该看起来像..

ALTER TABLE technical
PARTITION BY LIST COLUMNS (sector)
  (
    PARTITION p01 VALUES IN ('Retail'),
    PARTITION p02 VALUES IN ('Utility'),
    PARTITION p03 VALUES IN ('Insurance'),
    PARTITION p04 VALUES IN ('Agriculture')
  );

【讨论】:

  • 嗨,阿里夫,感谢您的出色回答。如果您有几分钟的空闲时间,请查看以下后续问题:stackoverflow.com/questions/37818604/…
  • 对于任何未列出的值,有什么方法可以制作未分类的分区?
猜你喜欢
  • 1970-01-01
  • 2017-07-31
  • 2019-06-17
  • 1970-01-01
  • 2018-09-12
  • 2016-11-13
  • 1970-01-01
  • 2017-04-09
  • 2015-07-02
相关资源
最近更新 更多