1

レコードにアクセスしようとしていますが、次のような構文を使用して、たとえば ID のリストを持つレコードを除外します。

WHERE id NOT IN (1,3,4,6,7, ...

データベースが大きくなるにつれて、ID のリストも大きくなります。いつか問題になるのでしょうか?

4

3 に答える 3

3

除外する ID のリストを別のテーブルに格納することを検討してから、次の SQL を使用します。

WHERE id NOT IN (select id from excluded_ids);

スケーラビリティidのためにの列にインデックスを付けます。excluded_ids

于 2012-05-15T14:19:52.447 に答える
2

あなたのステートメントの必要性に応じて、私は通常、そのような状況で長い値のリストを避ける傾向があります.別のテーブルとサブセレクトを求めています.

MySQLマニュアルから:

IN リストの値の数は、max_allowed_pa​​cket 値によってのみ制限されます。

したがって、このリストが非常に大きくなったときにステートメントが壊れないように、 max_allow_packetの値を確認してください。

于 2012-05-15T14:18:42.210 に答える
0

私は自分のデータベースでテストを実行しました.約800万行あり、そのうちの約10行を除外しました. 実行に25秒かかりました。それはスケーラブルではないことを意味すると思います;)

于 2012-05-15T14:15:44.927 に答える