-1

我有这个问题,一个表(表名是内容)在我的项目中有 600 万条记录。我想拆分这个表(内容)并在 cakephp 中使用,但我不知道该怎么做。

请帮我。

谢谢!

CakePHP version : 2.x

4

2 回答 2

1

你指的是分区吗?这可能是一个更好的选择,无需大量额外工作。

于 2013-01-21T17:25:18.277 回答
0

由于您使用的是 MySQL,因此您可以将表拆分为两个(或更多)并从中创建一个MERGE 表。然后您可以访问合并,就好像您只有一个大表一样。您的程序无需更改。

这是一个如何从MySQL 文档创建合并表的示例:

mysql> CREATE TABLE t1 (
    ->    a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ->    message CHAR(20)) ENGINE=MyISAM;
mysql> CREATE TABLE t2 (
    ->    a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ->    message CHAR(20)) ENGINE=MyISAM;
mysql> INSERT INTO t1 (message) VALUES ('Testing'),('table'),('t1');
mysql> INSERT INTO t2 (message) VALUES ('Testing'),('table'),('t2');
mysql> CREATE TABLE total (
    ->    a INT NOT NULL AUTO_INCREMENT,
    ->    message CHAR(20), INDEX(a))
    ->    ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;

使用合并表的最佳方式取决于您的情况。如果您必须拆分大表,因为它已经太大了,您将创建具有相同结构的其他表(create mySmallTable1 like myBigTable),然后将部分数据移动到每个表(insert into mySmallTable1 select * from myBigTable where ...)中。显然这需要一些时间,因为 MySQL 必须将记录从一个文件复制到另一个文件。然后删除大表并将其重新创建为小表的合并。

如果大表没问题,但您不想在其中插入新记录,您会做不同的事情:创建一个与大表具有相同结构的新表。定义新表和大表的合并,以便新插入进入新表(INSERT_METHOD选项)

于 2013-01-21T12:30:31.910 回答