WHERE 句と ORDER BY 句ですべて使用できる 129 個のフィールドを持つテーブルを持つマルチテナント アプリケーションがあります。最適なインデックス作成戦略を見つけるために 5 日間を費やしました。多くの知識を得ることができましたが、まだいくつか質問があります。
1) インデックスを作成するときは、常に最初に tenant_id を持つ複合インデックスにする必要がありますか?(すべてのクエリには、WHERE 句に tenant_id = ? があります)
2) WHERE 句と order by 句の両方ですべての列を使用できるため、すべての列にインデックスを作成する必要がありますか? (インデックスのない列で注文すると、約1,500,000行のテナントで実行するのに6秒かかることを知っています)
3) PK (tenant_id, ID) を作成しますが、これはそのテーブルへの結合に影響しませんか?
これを処理する方法についてのアドバイスは大歓迎です。
====== データベースエンジンは InnoDB
=======
構造 :
ID bigint(20) auto_increment primary
tenant_id int(11)
created_by int(11)
created_on Timestamp
updated_by int(11)
updated_on Timestamp
owner_id int(11)
first_name VARCHAR(60)
last_name VARCHAR(60)
.
.
.
(some 120 other columns that are all searchable)