sql >> データベース >  >> RDS >> Mysql

SQLまたはMySQLでJOINキーワードを使用しない結合に何か問題がありますか?

    WHEREのみを使用して結合をフィルタリングする いくつかの一般的なシナリオでは、非常に非効率になる可能性があります。例:

    SELECT * FROM people p, companies c 
        WHERE p.companyID = c.id AND p.firstName = 'Daniel'
    

    ほとんどのデータベースは、最初にデカルト積 を使用して、このクエリを文字通り実行します。 peopleの およびcompanies テーブルとその後 companyIDが一致するものによるフィルタリング およびid 田畑。完全に拘束されていない製品はどこにも存在せず、メモリ内に存在し、その後はほんの一瞬ですが、その計算には時間がかかります。

    より良いアプローチは、制約をJOINでグループ化することです。 ■関連する場合。これは主観的に読みやすいだけでなく、はるかに効率的です。したがって:

    SELECT * FROM people p JOIN companies c ON p.companyID = c.id
        WHERE p.firstName = 'Daniel'
    

    少し長くなりますが、データベースはONを確認できます。 句を使用して、完全に制約されたJOINを計算します。 すべてから始めるのではなく、直接 そして制限します。これにより、計算が高速になり(特に、大規模なデータセットや多数のテーブルの結合がある場合)、必要なメモリが少なくなります。

    「commaJOIN」を使用するすべてのクエリを変更します 「構文。私の意見では、その存在の唯一の目的は簡潔さです。パフォーマンスへの影響を考慮すると、これが説得力のある理由ではないと思います。



    1. pandas DataFrameをPostgreSQLテーブルにアップサートする方法は?

    2. MySQL:データベースに対する**すべての**権限を付与します

    3. jQueryでラジオボタンがチェックまたは選択されているかどうかを確認するにはどうすればよいですか?

    4. SQLiteアップデート