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

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

Jun 16, 2016 am 08:41 AM

一般的に、データベース内のデータが 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 コードのメソッドは次のとおりです。

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

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

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

すべてのPHP開発者が持つべき6追加スキル すべてのPHP開発者が持つべき6追加スキル Feb 28, 2025 am 10:52 AM

すべてのPHP開発者が持つべき6追加スキル

PHPの配列を理解します PHPの配列を理解します Feb 28, 2025 am 10:53 AM

PHPの配列を理解します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

See all articles