Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如果只选择相关列,那么创建表的垂直分区是否有好处?_Mysql_Sql_Database_Select_Database Partitioning - Fatal编程技术网

Mysql 如果只选择相关列,那么创建表的垂直分区是否有好处?

Mysql 如果只选择相关列,那么创建表的垂直分区是否有好处?,mysql,sql,database,select,database-partitioning,Mysql,Sql,Database,Select,Database Partitioning,我使用的是MySQL 5.6。我有一些表,每个表有15-20列以上 但是,我会小心地在每个查询中只选择相关列 创建这些表的垂直分区还会有一些好处吗(例如:性能方面的好处)?我假设使用某种手动方式实现垂直分区。问题很清楚: MySQL 5.6不支持垂直分区,其中 表的列被分配给不同的物理分区。 目前还没有任何引入垂直管道的计划 分区到MySQL 5.6 当您自己实现它时,实际上是在创建具有相同主键但不同列集的多个表。这在某些情况下很有用: 数据修改很少(因为这需要确定哪些分区有列,并且还需要大量

我使用的是MySQL 5.6。我有一些表,每个表有15-20列以上

但是,我会小心地在每个查询中只选择相关列


创建这些表的垂直分区还会有一些好处吗(例如:性能方面的好处)?

我假设使用某种手动方式实现垂直分区。问题很清楚:

MySQL 5.6不支持垂直分区,其中 表的列被分配给不同的物理分区。 目前还没有任何引入垂直管道的计划 分区到MySQL 5.6

当您自己实现它时,实际上是在创建具有相同主键但不同列集的多个表。这在某些情况下很有用:

  • 数据修改很少(因为这需要确定哪些分区有列,并且还需要大量锁定)
  • 有一小部分列是在没有其他列的情况下访问的
  • 或者,可能有许多行缺少某些列的值(因此分区表将不包含这些行)
通常,在不提供本机支持的数据库中,这是太多的工作。当存在很少访问的宽文本/blob列时,它会很有用。将这些列放在单独的表中可以使查询更加高效,因为在不使用这些列的情况下,不会从这些列中读取数据

因此,在某些情况下,这种方法是有用的。这是一个相当复杂的优化,对于一个典型表上的20-25列,不太可能需要它