メイン テーブルに関連付けられた一連のキーと値のペアを保持するためのプライマリ テーブルとセカンダリ テーブルがあります。この背後にある理由は、データが大きくなるにつれて、さまざまな種類の「キー」の数も増えるということです。現在の構造:
Main Table:
id|name
Secondary Table:
id|key|value
メイン テーブルからすべてのレコードを選択し、セカンダリ テーブルからいくつかのキーを選択したいと思います。私が今やっている方法は次のとおりです。
SELECT main_table.id, main_table.name, s1.value, s2.value
FROM main_table
LEFT JOIN secondary_table s1 ON s1.id = main_table.id AND s1.key = 'cats'
LEFT JOIN secondary_table s2 ON s2.id = main_table.id AND s2.key = 'dogs'
一部のレコードには 2 番目のテーブルに対応するレコードがないため、LEFT JOIN を使用する必要がありますが、とにかくレコードを返す必要があります。これは私には非効率的で、かなり遅いようです。おそらく私はそれについて間違った方法で進んでいますか?構造/クエリを改善するにはどうすればよいですか?