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

cmdとworkbenchmysqlのクエリのパフォーマンスの違い

    Explainプランに基づいて、オプティマイザーはORDER BY rentにインデックスを使用できません。 。したがって、次のことを試してください。

    1. rent_dateにインデックスが存在することを確認します rentsの列 テーブル。このインデックスは、ORDER BYを最適化するために使用されます 句。これは、単一列のインデックスでも、複数列のインデックス(他のシナリオで使用される)でもかまいません。ただし、複数列の場合は、rentを確認する必要があります。 columnは、インデックス順の最初の列です。
    2. idにインデックスが存在することを確認します kickscootersの列 テーブル。単一列/複数列のインデックスの詳細は、ポイント#1と同じです。
    3. serial_numberにインデックスが存在することを確認します kickscooter_states_190614の列 テーブル。単一列/複数列のインデックスの詳細は、ポイント#1と同じです。

    次に、これらのインデックスを確認した後、元のクエリを試してください。ほとんどの場合、オプティマイザは結合順序を最適化できるはずです。さらに、上記のクエリでは、 STRAIGHT_JOINを使用して結合順序を適用できます。 オプティマイザのヒント。したがって、次のクエリも試して、2つのクエリの間でベンチマークを実行してください。

    select
      r.user_id,
      k.id as kickscooter_id,
      st_astext(k.location) as location,
      k.created_at,
      k.serial_number,
      k_st.serial_number as states_serial_number,
      st_astext(k_st.gps) as gps_location,
      k_st.gps_updated_at,
      r.start_time,
      r.end_time
    from kickscooters k
    straight_join rents r
      on k.id= r.kickscooter_id
    straight_join kickscooter_states_190614 k_st
      on k.serial_number = k_st.serial_number
    order by r.rent_date
    limit 999;
    


    1. 重複データの問題とその修正方法

    2. PostgreSQLBツリーインデックスに関する注意

    3. MariaDB JDBCドライバーはLog4jの脆弱性の影響を受けますか?

    4. LibreOffice:'com.mysql.jdbc.driver'をロードできません