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

SQL クエリの調整

    <プレ>; WITH valid_positions AS ( SELECT MMSI , Message_ID , "Time" , Latitude , Longitude FROM dbo.DecodedCSVMessages_Staging WHERE Latitude> 55 AND Latitude <85 AND Longitude> 50 AND Longitude <141), position AS ( SELECT MMSI , Message_ID , "Time" ,緯度、経度 FROM dbo.DecodedCSVMessages_Staging WHERE Message_ID IN (1, 3) AND EXISTS ( SELECT * FROM valid_positions WHERE valid_positions.MMSI =DecodedCSVMessages_Staging.MMSI ))、詳細 AS ( SELECT MMSI 、 Ship_Type 、 Vessel_Name 、 Row_Number() OVER (PARTITION BY MMSI ORDER BY "Time" DESC) As row_num FROM dbo.DecodedCSVMessages_Staging WHERE Message_ID =5) SELECT ポジション.MMSI , ポジション.メッセージ_ID , ポジション.「時間」 , details.Ship_Type , details.Vessel_Name , ポジション.Latitude , ポジション.LongitudeFROM ポジションINNER JOIN の詳細 ON details.MMSI =pos itions.MMSI AND details.row_num =1 -- MMSI ごとの「最新」の船の詳細に制限

    現在、3 番目の CTE が使用されています。

    <オール>
  1. valid_positions :任意 任意の Message_ID について、座標が基準に適合するレコード 2)
  2. ポジション :Message_ID のすべてのレコード 1 または 3 に等しい および 対応する MMSI にレコードがあります valid_positions
  3. 詳細 :以前と変わらない。 「最新」の船/船舶の詳細を表示します (Message_ID =5)


    1. 挿入ステートメントのレコード数(Oracle)

    2. 照合の競合を解決できません

    3. MySQL-大きなデータベースからいくつかの特定のテーブルを削除する

    4. 多くのフィールドを持つ一意のキーを制約すると、MySQLのパフォーマンスが低下しますか?