[英]Slow query time SQL/Java
我正在查詢具有數千行的相當大的數據庫。 這大約需要5分鍾,而大約需要5秒鍾。
ResultSet rs = st.executeQuery("SELECT flights.airline, flights.flight_num,"
+ "origin_airport_code, destination_airport_code,"
+ "ticket.date, ticket.bought_date, ticket.price "
+ "FROM flights JOIN flightinfo JOIN ticket");
我應該使用某種特定類型的join JOIN語句嗎?
當前,您的查詢所執行的操作是獲取表的笛卡爾積,因為您尚未指定它們的連接條件或定義表如何相互關聯。
您需要在每個連接語句中添加條件或ON
子句,例如
SELECT flights.airline,
flights.flight_num,
origin_airport_code,
destination_airport_code,
ticket.date,
ticket.bought_date,
ticket.price
FROM flights
INNER JOIN flightinfo
ON flights.colName = flightinfo.colname -- << 1
INNER JOIN ticket
ON table.ColName = ticket.colName -- << 2
哪里:
1 >> Colname >> how the two tables:flights and flightinfo, are related
2 >> table >> I don't know where the table ticket will be joined, it is
either flights or flightinfo.
要進一步獲得有關聯接的知識,請訪問以下鏈接:
您的問題在最后一行
FROM flights JOIN flightinfo JOIN ticket
您應該INNER或LEFT加入他們。
您應該注意的另一件事是,如果每次航班有很多機票,您將獲得重復的航班。
如果可能沒有航班的機票,那么使用INNER join不會獲得航班。
我猜想flightinfo總是存在的,並且航班數是1:1。
所以最終的解決方案是(根據我的假設):
如果票證是您的主要表,並且您不需要沒有票證的航班,則可以執行FROM ticket
並進行內部FROM ticket
其他表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.