寻求南宁网站建设人员,网络销售渠道有哪些,百度推广充值必须5000吗,娱乐网站建设公司排名一般来说#xff0c;当我们的数据库的数据超过了100w记录的时候就应该考虑分表或者分区了#xff0c;这次我来详细说说分表的一些方法。目前我所知道的方法都是MYISAM的#xff0c;INNODB如何做分表并且保留事务和外键#xff0c;我还不是很了解。首先#xff0c;我们需要…一般来说当我们的数据库的数据超过了100w记录的时候就应该考虑分表或者分区了这次我来详细说说分表的一些方法。目前我所知道的方法都是MYISAM的INNODB如何做分表并且保留事务和外键我还不是很了解。首先我们需要想好到底分多少个表前提当然是满足应用。这里我使用了一个比较简单的分表方法就是根据自增id的尾数来分也就是说分0-9一共10个表其取值也很好做就是对10进行取模。另外还可以根据某一字段的md5值取其中几位进行分表这样的话可以分的表就很多了。好了先来创建表吧代码如下CREATE TABLE test.article_0 (id BIGINT( 20 ) NOT NULL ,subject VARCHAR( 200 ) NOT NULL ,content TEXT NOT NULL ,PRIMARY KEY ( id )) ENGINE MYISAM CHARACTER SET utf8 COLLATE utf8_general_ciCREATE TABLE test.article_1 (id BIGINT( 20 ) NOT NULL ,subject VARCHAR( 200 ) NOT NULL ,content TEXT NOT NULL ,PRIMARY KEY ( id )) ENGINE MYISAM CHARACTER SET utf8 COLLATE utf8_general_ciCREATE TABLE test.article_2 (id BIGINT( 20 ) NOT NULL ,subject VARCHAR( 200 ) NOT NULL ,content TEXT NOT NULL ,PRIMARY KEY ( id )) ENGINE MYISAM CHARACTER SET utf8 COLLATE utf8_general_ciCREATE TABLE test.article_3 (id BIGINT( 20 ) NOT NULL ,subject VARCHAR( 200 ) NOT NULL ,content TEXT NOT NULL ,PRIMARY KEY ( id )) ENGINE MYISAM CHARACTER SET utf8 COLLATE utf8_general_ciCREATE TABLE test.article_4 (id BIGINT( 20 ) NOT NULL ,subject VARCHAR( 200 ) NOT NULL ,content TEXT NOT NULL ,PRIMARY KEY ( id )) ENGINE MYISAM CHARACTER SET utf8 COLLATE utf8_general_ciCREATE TABLE test.article_5 (id BIGINT( 20 ) NOT NULL ,subject VARCHAR( 200 ) NOT NULL ,content TEXT NOT NULL ,PRIMARY KEY ( id )) ENGINE MYISAM CHARACTER SET utf8 COLLATE utf8_general_ciCREATE TABLE test.article_6 (id BIGINT( 20 ) NOT NULL ,subject VARCHAR( 200 ) NOT NULL ,content TEXT NOT NULL ,PRIMARY KEY ( id )) ENGINE MYISAM CHARACTER SET utf8 COLLATE utf8_general_ciCREATE TABLE test.article_7 (id BIGINT( 20 ) NOT NULL ,subject VARCHAR( 200 ) NOT NULL ,content TEXT NOT NULL ,PRIMARY KEY ( id )) ENGINE MYISAM CHARACTER SET utf8 COLLATE utf8_general_ciCREATE TABLE test.article_8 (id BIGINT( 20 ) NOT NULL ,subject VARCHAR( 200 ) NOT NULL ,content TEXT NOT NULL ,PRIMARY KEY ( id )) ENGINE MYISAM CHARACTER SET utf8 COLLATE utf8_general_ciCREATE TABLE test.article_9 (id BIGINT( 20 ) NOT NULL ,subject VARCHAR( 200 ) NOT NULL ,content TEXT NOT NULL ,PRIMARY KEY ( id )) ENGINE MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci好了10个表创建完毕了需要注意的是这里的id不能设为自增而且所有的表结构必须一致包括结构类型长度字段的顺序都必须一致那么对于这个id如何取得呢后面我会详细说明。现在我们需要一个合并表用于查询创建合并表的代码如下CREATE TABLE test.article (id BIGINT( 20 ) NOT NULL ,subject VARCHAR( 200 ) NOT NULL ,content TEXT NOT NULL ,PRIMARY KEY ( id )) ENGINEMRG_MyISAM DEFAULT CHARSETutf8 INSERT_METHOD0 UNION(article_0,article_1,article_2,article_3,article_4,article_5,article_6,article_7,article_8,article_9);注意合并表也必须和前面的表有相同的结构类型长度包括字段的顺序都必须一致这里的INSERT_METHOD0表示不允许对本表进行insert操作。好了当需要查询的时候我们可以只对article这个表进行操作就可以了也就是说这个表仅仅只能进行select操作那么对于插入也就是insert操作应该如何来搞呢首先就是获取唯一的id了这里就还需要一个表来专门创建id代码如下CREATE TABLE test.create_id (id BIGINT( 20 ) NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE MYISAM也就是说当我们需要插入数据的时候必须由这个表来产生id值我的php代码的方法如下function get_AI_ID() {$sql insert into create_id (id) values();$this-db-query($sql);return $this-db-insertID();}好了现在假设我们要插入一条数据了应该怎么操作呢还是继续看代码吧function new_Article() {$id $this-get_AI_ID();$table_name $this-get_Table_Name($id);$sql insert into {$table_name} (id,subject,content) values({$id},测试标题,测试内容);$this-db-query($sql);}/*** 用于根据id获取表名*/function get_Table_Name($id) {return article_.intval($id)%10;}其实很简单的对吧就是先获取id然后根据id获取应该插入到哪个表然后就很简单了。对于update的操作我想应该不需要再说了吧无非是有了id然后获取表名然后进行update操作就好了。