これを最もよく記述する方法がわからないので、私と一緒に裸にしてください。 4つの列を持つ表があるとします:id (int 11, indexed), title, content, category (varchar 5)
。大きなWHERE IN()節を持つMySQLのパフォーマンス
カテゴリを選択しました。各カテゴリには最大999のオブジェクトを含めることができます。 SELECT id FROM table WHERE category = ?
を使用して、私はすべてのオブジェクトのリストを取得します。
次に、ユーザーにオブジェクトの一部を選択/選択解除させます。その後、残りの選択されたオブジェクトの内容を選択する必要があります。
私の質問は以下の通りです。SELECT content FROM table WHERE id IN($array)
を使用するとパフォーマンスが心配するべきですか? SELECT content FROM table WHERE category = ? AND id IN($array)
を使用する方が良いでしょうか。ここでのアイデアは、INを実行する前に999個のオブジェクトに絞り込みます。
これは意味がありますか?または、IN()
をまったく使用しないでください。
私はあまりパフォーマンスを心配しないだろうパフォーマンスが高すぎます。 –
MySQLのEXPLAIN構文を読み、それを使って2つのクエリの違いを理解してください –
'category'にはインデックスを付けるべきです – nogad