1

我的数据库中有分区表,如下所示:

mysql> 显示创建表 drug_info\G;

Table: drugs_info
Create Table: CREATE TABLE `drugs_info` (
  `did` int(11) NOT NULL AUTO_INCREMENT,
  `brand_name` varchar(150) DEFAULT NULL,
  `generic` varchar(500) DEFAULT NULL,
  `tradename` varchar(150) DEFAULT NULL,
  `manfactured` varchar(100) DEFAULT NULL,
  `unit` varchar(300) DEFAULT NULL,
  `type` varchar(50) DEFAULT NULL,
  `quantity` varchar(50) DEFAULT NULL,
  `price` float DEFAULT NULL,
  PRIMARY KEY (`did`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (did) (PARTITION p0 VALUES LE
SS THAN (1000) ENGINE = InnoDB, PARTITION p1 VALUES LESS THAN (2000) ENGINE = InnoDB, PARTITION
p2 VALUES LESS THAN MAXVALUE ENGINE = InnoD

我写了一个选择查询,因为'partition po'它显示错误的结果如下:

mysql> select count(*) from drugs_info p0;

count(*) 
----------
64378 

对于上述选择查询,我将以下结果除外:

count(*)
---------
1000
4

1 回答 1

1

语法是:

SELECT count(*) FROM drugs_info PARTITION (p0) ;

另外,使用分区时要小心。有时它们具有逻辑含义,例如按月分区的销售表。在您的情况下,它看起来很随意;您可以决定在六个月后完全重新设计您的分区,您也必须更改您的代码。

于 2013-08-05T10:22:39.550 回答