SQL:按列值分区

Ned*_*ton 3 mysql sql

我有一个包含 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
Run Code Online (Sandbox Code Playgroud)

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

Alter table 'technical' partition by values in `sector`
Run Code Online (Sandbox Code Playgroud)

Muh*_*ker 6

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')
  );
Run Code Online (Sandbox Code Playgroud)

  • 对于任何未列出的值,有什么方法可以进行未分类分区吗? (2认同)