我有这个问题,一个表(表名是内容)在我的项目中有 600 万条记录。我想拆分这个表(内容)并在 cakephp 中使用,但我不知道该怎么做。
请帮我。
谢谢!
CakePHP version : 2.x
你指的是分区吗?这可能是一个更好的选择,无需大量额外工作。
由于您使用的是 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
选项)