国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP操作mysql數據庫分表的方法

2024-05-04 23:47:00
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP操作mysql數據庫分表的方法的相關資料,需要的朋友可以參考下
 

一般來說,當我們的數據庫的數據超過了100w記錄的時候就應該考慮分表或者分區了,這次我來詳細說說分表的一些方法。首先,我們需要想好到底分多少個 表,前提當然是滿足應用。這里我使用了一個比較簡單的分表方法,就是根據自增id的尾數來分,也就是說分0-9一共10個表,其取值也很好做,就是對10 進行取模。另外,還可以根據某一字段的md5值取其中幾位進行分表,這樣的話,可以分的表就很多了。

好了,先來創建表吧,代碼如下:

CREATE TABLE `ttlsa_com`.`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 `ttlsa_com`.`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 `ttlsa_com`.`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 `ttlsa_com`.`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 `ttlsa_com`.`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 `ttlsa_com`.`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 `ttlsa_com`.`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 `ttlsa_com`.`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 `ttlsa_com`.`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 `ttlsa_com`.`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 `ttlsa_com`.`article` ( `id` BIGINT( 20 ) NOT NULL ,`subject` VARCHAR( 200 ) NOT NULL ,`content` TEXT NOT NULL ,PRIMARY KEY ( `id` )) ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8 INSERT_METHOD=0 union =(`article_0`,`article_1`,`article_2`,`article_3`,`article_4`,`article_5`,`article_6`,`article_7`,`article_8`,`article_9`);

注意,合并表也必須和前面的表有相同的結構,類型,長度,包括字段的順序都必須一致這里的INSERT_METHOD=0表示不允許對本表進行 insert操作。好了,當需要查詢的時候,我們可以只對article這個表進行操作就可以了,也就是說這個表僅僅只能進行select操作,那么對于 插入也就是insert操作應該如何來搞呢,首先就是獲取唯一的id了,這里就還需要一個表來專門創建id,代碼如下:

CREATE TABLE `ttlsa_com`.`create_id` ( `id` BIGINT( 20 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ) ENGINE = MYISAM

也就是說,當我們需要插入數據的時候,必須由這個表來產生id值,我的php代碼的方法如下:

<?php function get_AI_ID() { $sql = "insert into create_id (id) values('')"; $this->db->query($sql); return $this->db->insertID(); } ?>

好了,現在假設我們要插入一條數據了,應該怎么操作呢?還是繼續看代碼吧

<?php 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操作就好了。
對于用戶表,建個最少列最基本信息的用戶名,比如用戶ID,用戶名,密碼。用戶的其他信息分布到以用戶ID分表的表上。
怎么分表如何分表以業務需求而定。

你可以根據id分,也可以根據年,月,地區來分。要按照業務需求。

以上所述是小編給大家介紹的PHP操作mysql數據庫分表的方法,希望對大家有所幫助,如果大家有不同的見解歡迎提出,共同學習進步!



注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 茂名市| 安化县| 沧州市| 新干县| 邵阳市| 盖州市| 陇川县| 竹溪县| 凤冈县| 延长县| 三都| 兴海县| 乌鲁木齐市| 尖扎县| 吕梁市| 台山市| 玛多县| 千阳县| 大竹县| 桐柏县| 浦城县| 枞阳县| 沙雅县| 淮北市| 连平县| 牟定县| 繁峙县| 景东| 成安县| 定兴县| 昌乐县| 修水县| 宁陵县| 辽阳县| 青铜峡市| 新兴县| 新巴尔虎左旗| 津南区| 柳河县| 岳西县| 岳西县|