2012-03-20 5 views
1

Сейчас я реализую следующий sql-запрос для iphone-приложения, и я использую HTTP GET. SQL-запрос не содержит объединений, так ли он достаточно эффективен?Лучший способ выполнить вложенный SQL-запрос?

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

ответ

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 является первичным ключом, эти два запроса вряд ли сильно отличаются во время выполнения.

Смежные вопросы