我有一個表「遊」與旅遊人次
tripid country city
1 UK London
2 US New York
3 US Las Vegas
而且我有一個表,「價格」,價格
tripid price duration
1 200 8
1 400 10
1 600 12
2 300 5
2 900 15
3 50 10
3 150 30
現在讓我們說,我想在美國的所有行程50和200
之間的價格於是我用這個SQL查詢:
SELECT trip.* FROM `trips` WHERE `country` = 'US' AND `tripid` in
(SELECT tripid FROM `prices` WHERE `price` BETWEEN 50 and 200 GROUP BY tripid)
當然這個工作正常,但我的桌子正在增長,這是SLOWWW。這是因爲子查詢效率非常低。
我該怎麼做才能讓這部分出來並使其更快?
試一試存在'SELECT trip。* FROM trips WHERE country ='US'AND EXISTS (SELECT 1 FROM prices WHERE price BETWEEN 50 and 200 AND prices.tripid = trip.tripid GROUP BY tripid)' – Mihai 2015-01-20 23:03:31