MySQL количество элементов в «в пункте»

У меня есть три таблицы для определения пользователей: я

USER: user_id (int), username (varchar)
USER_METADATA_FIELD: user_metadata_field_id (int), field_name (varchar)
USER_METADATA: user_metadata_field_id (int), user_id (int), field_value (varchar)

Я хотел бы создать пользователя среднего уровня, который имеет определенный доступ к другим пользователям в приложении. Чтобы определить, какие пользователи могут войти в систему, я использую подзапрос, подобный следующему:

SELECT user_id FROM user WHERE user_id 
     IN (SELECT user_id 
         FROM user_metadata 
         WHERE user_metadata_field_id = 1 AND field_value = 'foo')

В настоящее время я сохраняю строку подзапроса в переменной, а затем динамически вставляю ее во внешний запрос каждый раз, когда мне нужно получить список пользователей. После этого я подумал:должно быть лучше просто хранить строку фактического s ".user_id

Так что вместо того, чтобы хранить это в переменной ...

$subSql = "SELECT user_id FROM user_metadata WHERE user_metadata_field_id = 1 AND field_value = 'foo'";

... Я на самом деле выполняю запрос и сохраняю результат следующим образом ...

$subSql = "12, 56, 89, 100, 1234, 890";

Затем, когда мне нужно получить список пользователей, к которым имеет доступ зарегистрированный пользователь, я могу сделать это с помощью:

$sql = "SELECT user_id FROM user WHERE user_id IN ($subSql)";

И напоследок вопросы:

Сколько предметов вы можете использовать в MySQLIN ПУНКТ? Хранение фактических идентификаторов вместо оператора sub-sql должно быть быстрее для выполнения этого внешнего запроса каждый раз, верно?

Ответы на вопрос(4)

Ваш ответ на вопрос