0

アプリケーションに次のクエリがあります。

SELECT a.*, f.*
FROM flights_database f 
JOIN airports a ON f.airport = a.airportNameClean
WHERE f.flight_date > CURDATE()-30
AND (f.flight_number LIKE 'New York%' OR f.airport LIKE 'New York%' OR f.airline LIKE 'New York%' OR a.iata = 'New York') 
ORDER by f.flight_date DESC, f.scheme DESC 
LIMIT 200

実行に時間がかかりすぎます (2 秒以上)。私は、flight_date、flight_number、airport、airline、および scheme のインデックスを持っています。

それでも、EXPLAIN は次のように報告します。

1
SIMPLE
f
ALL
flight_number,airport,airline,flight_date,auto_suggest,suggest_daily,flight_search
NULL
NULL
NULL
1408614
Using where; Using filesort

1
SIMPLE
a
ref
PRIMARY,airportNameClean
airportNameClean
107
my_db.f.airport
1
Using where

どのインデックスを作成する必要がありますか?何が欠けていますか?

4

2 に答える 2