如何从MySQL中的分区中选择行

Kad*_*Kad 9 mysql sql partitioning database-partitioning mysql-5.1

我将300MB表分区并尝试p0使用此命令从分区进行选择查询

SELECT * FROM employees PARTITION (p0);
Run Code Online (Sandbox Code Playgroud)

但我得到了以下错误

ERROR 1064 (42000): You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near '(p0)' at line 1
Run Code Online (Sandbox Code Playgroud)

如何编写select查询以从特定分区获取数据?

Rav*_*avi 12

根据您的MySql版本,PARTITION关键字在MySQL 5.6.2之前不存在.您将使用MySQL 5.5甚至5.1,但不是5.6.如果你正在使用MySQL 5.1,那么你可以做一些解决方法,如下所示

SELECT partition, count(ID)
FROM
(
    SELECT ID,
      case when condition then p1
           when condition then p2
      .....
      end as partition

    FROM
      table
) s1
GROUP BY partition
Run Code Online (Sandbox Code Playgroud)

注意:上述解决方案只是解决方法,以满足您的需求输出.

您还可以尝试此查询来计算分区的总行数.

SELECT table_rows as 'count(*)' FROM information_schema.partitions WHERE table_schema = schema() and table_name ='employees' and partition_name = 'p0';
Run Code Online (Sandbox Code Playgroud)

注意:您可以更改table_schema = schema()table_schema = 'yourschema'


rud*_*doy 9

实际上,自MySQL 5.6以来支持的语法是:

SELECT * FROM table PARTITION (partitionName);
Run Code Online (Sandbox Code Playgroud)