0

小さなデータセットで正常に動作する次の SQL コードがあります。SELECT DISTINCT c.nameループ条件としてa を使用して、これを MySQL の FOR ループに入れることを検討すべきだと友人に言われました。

SELECT c.name, c.limit, c.price, c._low, c._high, c.date
FROM comp c
WHERE c.e_id IN 
(SELECT e_id FROM part_e WHERE core_id=23)
OR c.pn IN
(SELECT pn FROM part_ct WHERE core_id=23)
GROUP BY c.name
ORDER BY c.date DESC, c.name ASC
LIMIT 0,200

新しい SQL プログラマーとして、MySQL でループを実行する方法を調べていました。概念的には単純に思えますが、これを実際にループで実行する SQL ステートメントを実際に設計する方法を理解するのに苦労しています。

私の友人は、ループを使用する必要がある理由は、SQL データセットで「post」演算子を使用すると、非常に大きなデータセットを処理するとき、または非常に大きなクエリ要求を処理するときに、パフォーマンスに悪影響を与える可能性があるためだと言いました。

これは私には理にかなっているので、これを行う方法を理解するための助けと、サブクエリが悪い習慣と見なされる理由に関する詳細情報を探しています。

助けてくれてありがとう!

4

1 に答える 1

0

「for」と「loop」の意味を教えてください

SQL では、Select 文字列を使用して大量のデータを取得します。このデータはコード (php、c、java...) で使用する必要があり、データセットが完了するまで、行から行へ、またはデータセットからデータセットへと移動します。

パフォーマンスのヒント: SQL 結合と SQL サブクエリ (パフォーマンス)?

ヒント: c.e_id でグループ化する必要があります (数字でグループ化する方が高速です)

于 2012-06-20T20:47:20.887 に答える