私はテーブルT1を持っています。ここで、col Aは主キー、col BはテーブルT2の主キーである外部キーです。私はT1の中に(B、A)の複合インデックスを作成したい。しかし、MySQLではインデックスを(A、B)としてのみ作成することができます。それはcol Bが外来キーなのですか?説明してください2つのカラムを持つMySQLインデックスは、そのうちの1つは外部キーです
答えて
これは私のために正常に動作します:
CREATE TABLE t2 (id INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b INT NOT NULL REFERENCES t2(id)) ENGINE=InnoDB;
CREATE INDEX ix_t1_b_a ON t1 (b, a);
InnoDB
は、インデックス内の行ポインタとしてクラスタ化キーが含まれていますが、明示的にフィールドを追加することを防止し、時にはいくつかのクエリを最適化するために必要なものは何もありません。
構文を確認してください。
これは意味がないと思います。 すでに一意の列(主キーは一意)を使用して複合インデックスを作成しようとしています。
ストレージ・エンジンとしてのInnoDBを使用しているので、単独でカラムBのインデックスは、InnoDBが主キーを使用してデータをクラスタリングカラムA(プライマリキー)
http://www.mysqlperformanceblog.com/2006/10/03/mysql-optimizer-and-innodb-primary-key/
私の場合、実際には、col AとBの両方が主キーであり、COL Bも外部キーです。 mysqlは、コンポジット(A、B)としてデフォルトのインデックスを返します。しかし、私は(b、a) –
@patruniので、Bにインデックスを作成してください - それはシーンの背後に - 列Aも含めます。 (Aはプライマリキーインデックスの一番左のカラムなので) –
@Scrum Meister:しかし、Bのインデックスを作成する必要はありません。デフォルトでは、mysqlは外部キーからインデックスを取得します。このインデックスには、シーンの裏にAが含まれているといってもいいですか? –
を含むであろう。主キーを定義していない場合、InnoDBはヌル値を持たない一意のインデックスを代わりに使用しようとします。これにより、行が順番に挿入され、主キーを使用する結合のパフォーマンスが向上します。しかし、私の質問では、テーブルT1ではPKがcol Aでcol BがT1でユニークではない外部キーであると述べました。したがって、私がpkを(A、B)に設定すると、自動的にmysqlがプライマリインデックスとしてインデックスを作成します。 (B、A)のようにインデックスを変更しようとすると、Bは一意ではないので、InnoDBはクラスタインデックスを使用してインデックスを作成できません。だから、それはエラーを投げるでしょう。
- 1. Mysql:外部キーを持つ2つのテーブルの行を削除
- 2. 私は2つの外部キーを持つモデル持っジャンゴ
- 3. has_many:throughテーブルを2つ持つ外部キー
- 4. Mysql 2つの異なるテーブルの主キーである2つの列への参照を持つ外部キー
- 5. JPA、Hibernate、Java。複合プライマリキー、そのうちの1つも外部キーです
- 6. 外部キーとしてvarcharカラムを持つMySQLテーブル
- 7. 内部は2つの外部キーを1つのテーブルに結合します
- 8. Hibernateマッピング - 外部キーを持つ1つのテーブルを参照する同じ列を持つ2つのテーブル
- 9. 1つのEntity Frameworkコアテーブルへの2つの外部キー
- 10. 2つの異なるテーブルの2つの外部キーを持つコンポジットプライマリキーmvc
- 11. 同じテーブルの2つの外部キーを持つSql selectステートメント
- 12. 同じテーブルの2つの外部キーを持つDjangoモデル
- 13. 2つの外部キーを持つ結合クエリのMedoo構文
- 14. 外部キーを持つ2つのテーブル間のデータベース削除クエリ
- 15. MySQLの2つのカラムで1つの値を検索する
- 16. NHibernateで外部キー関係を持つ2つのテーブルをマップするには?
- 17. SQLAlchemyは、2つの外部キーを持つ2つのテーブルを結合することはできません
- 18. 接続3つの外部キーを持つテーブルと1
- 19. 1つのテーブルから2つの外部キー
- 20. 複数の外部キーを持つ表のデザインを改善するには、キーのうち1つのみがいつでも使用されますか?
- 21. CakePHPの3 - 同じテーブルにリンクされている2つの外部キー - 私はそれらを結ぶ、独自の属性を持つと2つの外部キーを持つ2つのテーブル、それぞれの持っている
- 22. 外部キーを持つSybase制約と外部テーブルのカラム値の条件チェック
- 23. MySQLは2つのインデックスを1つに結合します
- 24. Entity Frameworkは - 私は2つの次のモデルとDbContext持つ外部キー
- 25. 2つの外部キーを1つの行に割り当てる方法は?
- 26. 2つの外部キーは、私は3つのテーブルでMySQLデータベース持ってWHERE句
- 27. は、私は2つのVC、そのうちの一つを持って迅速
- 28. 2つの列を含む主キーを持つ表への外部キー参照
- 29. は、私は2つのhtmlファイルを持つ外部のhtmlファイル
- 30. カントは、外部キーを持つ表
使用しているスクリプトを投稿してください。 – Quassnoi
そして、あなたが得るエラー... – Unreason