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

複数列のインデックスを使用している場合でも、複数列のクエリが対応する単一列のクエリよりも大幅に遅いのはなぜですか?

    インデックスを作成しましたかstop_id, departure_timedeparture_time, stop_id まったく何もしません。

    これは本当に 難しいもの-インデックスを処理するためのすべての可能な悪いことがあります:(

    範囲、OR、および連続していないINがあります。それより悪くなることはありません。

    stop_id, departure_timeをお試しください それでも問題が解決しない場合は、PostgreSQLに切り替える以外にできることはほとんどありません。

    クエリを次のように書き直すこともできます:

    SELECT * 
    from stop_times 
    WHERE ( stop_times.stop_id IN(51511,51509,51508,51510,6,53851,51522,51533)
          AND departure_time BETWEEN '02:41' AND '05:41'
          )
       OR ( stop_times.stop_id IN(51511,51509,51508,51510,6,53851,51522,51533)
          AND departure_time BETWEEN '26:41' AND '29:41' 
          ) 
    

    または:

        SELECT * 
        from stop_times 
        WHERE ( stop_times.stop_id IN(51511,51509,51508,51510,6,53851,51522,51533)
              AND departure_time BETWEEN '02:41' AND '05:41'
              )
    UNION ALL
        SELECT * 
        from stop_times 
        WHERE ( stop_times.stop_id IN(51511,51509,51508,51510,6,53851,51522,51533)
              AND departure_time BETWEEN '26:41' AND '29:41' 
              )
    


    1. 初心者のためのSQLDELETE

    2. MySQLエラー2006:mysqlサーバーがなくなりました

    3. MAMPでMySQLに接続する

    4. 2つの行間の時間差を計算する