私はMySQLでの2つのテーブルを持って、それらの間のMySQLの最適化
Table_A { pk_A VARCHAR 150 PRIMARY KEY, random_data } ~ 9500 rows
Table_B { pk_B VARCHAR 150, more_random_data } ~ 50000 rows
の関係は1対多、PK_AはコルPK_BにTable_Bで複数回検出されますです。
私の問題は、次のとおりです。
私はPK_Bにインデックス付けを有効にした場合、PHPは/ MySQLのCRUDが正常に動作しますが、JOINまたは両方のテーブルを含むコマンドラインから他の任意のクエリは、長い時間を要する
私はPK_Bにインデックス付けを無効にした場合、PHP/MySQLのCRUDはlaggishになりますが、両方のテーブルを含むコマンドラインからJOINまたは他の任意のクエリは、瞬時
どのようです私は私のデータベースのパフォーマンスを向上させる(私はintにvarchar型からの私のPKのを修正することができる(11))が、
おかげ
なぜvarcharを主キーとして使用していますか? –
どのようにテーブルに参加していますか? PKは常に索引付けされる必要があり、高速な結合のために外部キー列も索引付けする必要があります。 – bfavaretto
使用されているエンジンは何ですか? MyISAMとInnoDBのパフォーマンスに関する考慮事項は異なります。 – SingleNegationElimination