私はテーブルcompany
を持っています。これはcountry_id
というカラムを持っていて、country
テーブルの主キーIDの参照です。MySQL - 多国籍企業のパフォーマンスを向上させる
CREATE TABLE `company` (
`Id` INT(11) NOT NULL,
`Name` VARCHAR(100) NOT NULL,
`Symbol` VARCHAR(50) NOT NULL,
`Industry` VARCHAR(100) NOT NULL,
`Type` VARCHAR(20) NOT NULL,
'country_id' INT(11) NOT NULL,
PRIMARY KEY (`Id`),
CONSTRAINT `company_ibfk_1` FOREIGN KEY (`country_id`) REFERENCES `country` (`Id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;
この表には、複数の国の複数の会社があります。下の表のように。
私company
テーブルには、膨大なデータを持っています。私はcompany
上の選択クエリを向上させるには、国に基づいてテーブルのパフォーマンス。選択クエリは次のようになります
select * from company where country_id = 2
最適な設計アプローチは何ですか? country_id
列にインデックスを追加する必要がありますか、またはcountry_id
列に基づいてパーティションを行う必要がありますか?提案してください。
をこのテーブルは読み取り専用である場合には(一度のしばらくの間を除いてこの目的のためにMyISAMを使用することを検討することができます。この種のテーブル – Preuk
@Preukのセットアップで読取りパフォーマンスが改善されましたが、これは読取り専用表ではありません。継続的にデータがこの表に挿入されます。しかし、私の好みは、選択クエリを改善することです。 – Suvonkar
country.idとcountry.nameが両方ともUNIQUEである限り、それらのうちの2つのテーブルだけが巨大であり(数百万の再記録)、小さなテーブル(最大200レコード) – Jay