Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mengapa kueri multi-kolom saya jauh lebih lambat daripada kueri satu kolom yang sesuai, bahkan dengan indeks multi-kolom?

Apakah Anda membuat indeks stop_id, departure_time ? Karena departure_time, stop_id akan melakukan apa-apa.

Ini adalah benar-benar yang sulit - ia memiliki segala kemungkinan buruk untuk berurusan dengan indeks :(

Anda memiliki rentang, OR dan IN yang tidak bersebelahan - tidak ada yang lebih buruk dari itu.

Coba stop_id, departure_time dan jika tidak membantu maka tidak banyak yang dapat Anda lakukan selain beralih ke PostgreSQL.

Anda juga dapat mencoba menulis ulang kueri sebagai:

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' 
      ) 

atau:

    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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Database dunia MySQL Mencoba menghindari subquery

  2. masalah instalasi mysql-python (di mac os x lion)

  3. Kiri Gabung ke rekaman terbaru

  4. Bagaimana menghubungkan database MySQL jarak jauh di PHP

  5. Gunakan ekstensi spasial MySQL untuk memilih titik di dalam lingkaran