1,000 万行近くの個人情報を格納するテーブルがあります。
現在、State は person テーブルの char(2) フィールドです。これにより、予想どおり、大量のデータの重複が発生します。State データを独自のテーブルに正規化し、person テーブルで FK を作成すると、クエリ時間が短縮されますか?
前:
SELECT Name, City, State FROM Person WHERE State = 'WI'
後:
SELECT p.Name, p.City, s.Name as State
FROM Person p
INNER JOIN State s ON p.State == s.Id
WHERE s.Name = 'WI'
これによりパフォーマンスが向上するように思えますが、クエリの最適化に関しては専門家とは言えません。