0

だから私の専門知識はMySQLにないので、このクエリを書きました。EquipmentDataに100k行、EquipmentDataStagingに30k行(私にとっては非常に少ないデータです)で、5分程度で実行がますます遅くなり始めています。

   CREATE TEMPORARY TABLE dataCompareTemp 
   SELECT eds.eds_id FROM equipmentdatastaging eds
   INNER JOIN equipment e ON e.e_id_string = eds.eds_e_id_string
   INNER JOIN equipmentdata ed ON e.e_id = ed.ed_e_id 
       AND eds.eds_ed_log_time=ed.ed_log_time 
       AND eds.eds_ed_unit_type=ed.ed_unit_type
       AND eds.eds_ed_value = ed.ed_value

このクエリを使用して、クライアントデバイスから取得したデータ行をデータベース内にある現在のデータと比較しています。ここから、一時テーブルを取得し、IDを使用して条件付きの決定を行います。私はe_id_stringインデックスを付けました、そして私はe_idインデックスを付けました、そして他のすべてはそうではありません。このすべての情報を比較しなければならないのはばかげているように見えますが、クライアントシステムは冗長なデータを吐き出しているので、このクエリを使用してそれを見つけています。これに関するあらゆるタイプのヘルプは、SQLまたはMySql Managementによる別のアプローチであるかどうかにかかわらず、非常に高く評価されます。MSSQLでこのようなことを行うと、要求をはるかにうまく処理できるように感じますが、それはおそらく、何かが正しく設定されていないためです。

4

1 に答える 1

1

チップ

  • ONここでwithまたはWHEREconditionを使用しているすべての必要な列にインデックスをeds_ed_log_time付けるeds_e_id_stringには、、、、、、、、、、、eds_ed_unit_typeeds_ed_valueed_e_ided_log_timeed_unit_typeed_value

  • 構文をSELECT STRAIGHT JOIN...に変更しますsee more reference

于 2012-07-05T04:38:25.617 に答える