mysql - SQL:按列值分区

标签 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

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

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

最佳答案

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')
  );

关于mysql - SQL:按列值分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37801680/

相关文章:

MySQL 查询 if else JOIN

php - 如何在 Silverstripe 中使用第二个数据库

mysql - 如何消除此查询中的重复记录

sql - 我需要将 SQL 参数转换为 Sequelize

python - 如何在 DJANGO 2.2 上进行多个字符串查询

sql - 搜索结果按特定顺序显示?

sql - 您可以并且应该将表名存储在表中吗?

sql - 如何限制从我的 tomcat 部署的 java 应用程序到 SQL Server 服务器的连接数?

c# - 单击按钮刷新 SQLDataReader

mysql - 在phpMyAdmin中,如何输入 'remote' MySQL信息(非本地)?