10bet网址
MySQL 5.6リファレンスマニュアル
下载本手册
PDF(美国高级主任)- 26.8 mb
PDF (A4)- 26.8 mb


14.6.1 InnoDBテ,ブルの作成

InnoDBテ,ブルを作成するには,特別な句を付けずに创建表ステ,トメントを使用します。以前は,引擎= InnoDB句が必要でしたが,InnoDBがデフォルトのストレ,ジエンジンとなったため必要なくなりました。(デフォルトのストレ,ジエンジンがMyISAMであるMySQL 5.1以前が実行されているサ,バ,上で,, mysqldumpまたはレプリケ,ションを使用して创建表ステ,トメントを再現する予定がある場合は,その句を引き続き使用できます。)

——默认存储引擎= InnoDB。创建表t1 (a INT, b CHAR(20),主键(a));向后兼容旧的MySQL。创建表t2 (a INT, b CHAR(20),主键(a)))引擎=InnoDB;

innodb_file_per_tableの設定に応じて,InnoDBではシステムテ,ブルスペ,ス内またはテ、ブルごとの別個のテ、ブルスペ、ス(.ibdファaapl .ルで表されます)内に,各テ,ブルおよび関連付けられた主キ,ンデックスが作成されます。MySQLでは,MySQLデ,タベ,スディレクトリの下にある测验ディレクトリ内に,t1.frmおよびt2.frmファ@ @ルが作成されます。内部的に,InnoDB独自のデ,タディクショナリにテ,ブルのエントリが追加されます。このエントリには,デ,タベ,ス名が含まれます。たとえば,t1テ,ブルが作成されるデ,タベ,スが测验である場合,エントリは“测试/ t1”となります。つまり,ほかのいくつかのデータベースに同じ名前t1のテ,ブルを作成でき,InnoDB内部でテ,ブル名の競合は発生しません。

これらのテ,ブルのプロパティ,を表示するには,显示表状态ステ,トメントを発行します。

显示表状态从测试像't%' \G;

ステ,タスの出力には,これらの1番目のテ,ブルの行フォ,マットプロパティ,が“紧凑”であることが表示されます。この設定は基本的な実験には適していますが,もっとも強力なInnoDBのパフォ,マンス機能を活用するには,すぐに“动态”“压缩”などのその他の行フォ,マットの使用に進んでください。これらの値を使用するには,最初に少しの設定が必要です。

设置全局innodb_file_per_table=1;设置全局innodb_file_format=barracuda;CREATE TABLE t3 (a INT, b CHAR (20), PRIMARY KEY (a))) row_format=dynamic;CREATE TABLE t4 (a INT, b CHAR (20), PRIMARY KEY (a)) row_format=compressed;

必ず,InnoDBテ,ブルごとに主キを設定し,次のようなカラム(複数の場合あり)を指定してください。

  • もっとも重要なクエリ,で参照される。

  • ブランクのままになっていない。

  • 重複する値がない。

  • 挿入後に値が変更されるとしても,きわめてまれである。

たとえば,人に関する情報を含むテーブルでは,複数の人が同じ名前を持つ可能性もあり,名字をブランクにしたり,名前を変更したりする人もいるため,(名、姓)上には主キ,を作成しません。制約が非常に多く,主キーとして使用する明確なカラムセットがないことも多い場合には,主キーの全部または一部として機能する数値IDの新しいカラムを作成してください。行が挿入されると自動的に昇順の値が入力されるように,自動@ @ンクリメントカラムを宣言できます。

——ID的值可以充当不同表中相关项之间的指针。创建表t5 (id INT AUTO_INCREMENT, b CHAR(20),主键(id));主键可以包含多个列。任何autoinc列都必须放在前面。创建表t6 (id INT AUTO_INCREMENT, a INT, b CHAR(20),主键(id,a));

主キ,を定義しなくてもテ,ブルは正常に機能しますが,主キーは多くのパフォーマンス要素に関連し,大きなテーブルや頻繁に使用されるテーブルにとって重要な設計要素です。常に创建表ステ,トメントで指定することを習慣にしてください。(テ,ブルを作成し,デ,タをロ,ドしてから,ALTER TABLEを実行してあとで主キーを追加する場合の操作は,テーブルの作成時に主キーを定義するよりも大幅に時間がかかります)。