こんにちは、誰かが私のSQL理論を助けることを望んでいます。私は、複数のテーブルからの結合を使用する一連のレポートを作成する必要があります。これらのレポートは私が望むよりもはるかに低速で実行されており、私の知識は壁に打ちのめされていますが、Googleで何かを見つけることはできませんが、私はSQLを最適化したいと考えています。SQL複数テーブルの結合 - 最適な最適化
私はここに誰かが私にいくつかのベストプラクティスのガイダンスを与えることを望んでいます。それは私がインナー正方形でブルーのアイテムに参加することを理解大幅にデータを削減
Items INNER JOIN BlueItems ON Items.ItemID = BlueItems.ItemID AND BlueItems.shape = 'square'
LEFT JOIN ItemHistory ON Items.ItemID = ItemHistory.ItemsID
LEFT JOIN ItemDates ON Items.ItemID = ItemDates.ItemID
WHERE ItemDates.ManufactureDate BETWEEN '01/01/2017' AND '01/05/2017'
後で合流する行数が中に含ま減らすために戻ってくるよう
は基本的に私は、結果セットにフィルタを適用しようとしていますこの時点で設定しますか?また、Where句は実行時にデータセットを減らすのに十分なインテリジェントなことも理解していますか?私は間違っていますか?すべてのデータを返してから、そのデータをフィルタリングするだけですか?
この種のクエリを高速化する方法についてのガイドラインは素晴らしいと思いますが、インデックスなどは既に導入されています。残念なことに、データベースは実際には他の人によって見直されており、データベースに基づいてレポートを作成しています。これは、データそのものではなく、クエリを最適化できることを制限しています。
この時点では、SQLでデータをフィルタリングし、実際に使用されているデータセットを減らし、単純にフィルタリングするさまざまな方法をSQLがどのように処理するかに関する知識を向上させることができました。すべての指導は非常に高く評価されるでしょう!
'インデックスのようなものがすでに置かれています。 '...あなたはインデックス作成に関してあなたが行ったことを表示/伝えることができますか? –
こんにちはティム、物事の側面は私の送金の外ですが、本質的に、すべてのItemIDフィールドなどの主キーフィールドにインデックスが存在することがわかります。残念なことに、データベースは実際には他の人によって見直されており、データベースに基づいてレポートを作成しています。これは、データそのものではなく、クエリを最適化できることを制限しています。 – SqlQuery123