ホームページ > バックエンド開発 > PHPチュートリアル > MySQLデータベースを操作するPHPメソッド table_phpの例

MySQLデータベースを操作するPHPメソッド table_phpの例

WBOY
リリース: 2016-06-16 08:41:00
オリジナル
867 人が閲覧しました

一般的に、データベース内のデータが 100 万レコードを超える場合、テーブルまたはパーティションの分割を検討する必要があります。今回はテーブルを分割するいくつかの方法について詳しく説明します。まずテーブルを何個に分割するかを考える必要がありますが、もちろんアプリケーションが満たされることが前提です。ここでは、自動インクリメントされる 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_ci
CREATE 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_ci
CREATE 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_ci
CREATE 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_ci
CREATE 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_ci
CREATE 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_ci
CREATE 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_ci
CREATE 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_ci
CREATE 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_ci
CREATE 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
ログイン後にコピー

OK、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 は、このテーブルでは挿入操作が許可されていないことを意味します。クエリが必要な場合、このテーブルは選択操作のみを実行できます。まず、一意の ID を取得する必要があります。 ID を具体的に作成するために必要なコードは次のとおりです:

CREATE TABLE `ttlsa_com`.`create_id` ( 
`id` BIGINT( 20 ) NOT NULL AUTO_INCREMENT PRIMARY KEY 
) ENGINE = MYISAM
ログイン後にコピー

つまり、データを挿入する必要がある場合、このテーブルによって ID 値を生成する必要があります。私の PHP コードのメソッドは次のとおりです。

<&#63;php 
function get_AI_ID() { 
$sql = "insert into create_id (id) values('')"; 
$this->db->query($sql); 
return $this->db->insertID(); 
} 
&#63;>
ログイン後にコピー

それでは、データを挿入したいと仮定して、どうすればよいでしょうか?引き続きコードを見てみましょう

<&#63;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; 
} 
&#63;>
ログイン後にコピー

これは実際には非常に簡単ですよね。まず ID を取得し、その ID に基づいてどのテーブルに挿入するかを取得するだけです。
更新操作については、これ以上説明する必要はないと思います。ID を取得し、テーブル名を取得して、更新操作を実行するだけです。
ユーザー テーブルの場合は、ユーザー ID、ユーザー名、パスワードなど、少なくとも最も基本的な情報を含むユーザー名を作成します。その他のユーザ情報は、ユーザIDテーブルに分割されたテーブルに分散されます。
テーブルをどのように分割するかは、ビジネス ニーズによって異なります。

ID、年、月、地域ごとに並べ替えることができます。ビジネスニーズに応じて。

上記は、PHP を使用して mysql データベースのサブテーブルを操作する方法について編集者が紹介したものです。異なる意見がある場合は、お気軽に提案してください。一緒に学び、進歩しましょう!

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート