更好的方法来完成嵌套SQL查询?

时间:2012-03-20 16:01:32

标签: mysql database performance

现在我正在为iphone-app实现以下sql查询,我正在使用HTTP GET。 SQL查询不包含连接,所以它是否足够有效?

SELECT
   menu_name 
FROM Menus
WHERE 
  menu_id IN (
    SELECT
      menus_id 
    FROM Restaurants_Menus 
    WHERE Restaurants_id = '$restaurantID'
  )

1 个答案:

答案 0 :(得分:2)

只有在足够的情况下才能回答。如果它满足您的需求,那就没关系。但是,如果您使用JOIN

,可能会更快
SELECT
  Menus.menu_name
FROM 
  Menus
 JOIN Restaurants_Menus ON Menus.menu_id = Restaurants_Menus.menus_id
WHERE Restaurants_Menus.Restaurants_id = '$restaurantID'

您可以使用EXPLAIN运行它们以确定索引的使用位置并判断查询执行时间。如果Restaurants_Menus不是大表,并且Restaurants_id是主键,则两个查询的执行时间可能差别不大。