Каков максимальный размер запроса MySQL через рельсы? - PullRequest
1 голос
/ 24 декабря 2011

Мне кажется, я не могу сформулировать этот вопрос достаточно хорошо, чтобы найти ответ в Google.

Какова максимальная длина запроса MySQL 5.1?Кроме того, существует ли релевантный лимит Rails 3?

У меня есть массив из 5000+ адресов электронной почты, и мне нужно получить связанные идентификаторы пользователей из БД.Я бы предпочел сделать все это за одну поездку, например:

emails = get_emails # an array of strings
User.select(:id).where("email in (#{emails * ','})")

Даже если это работает на 5000, я хочу убедиться, что когда-нибудь это сработает на 50 000.Итак, насколько большими могут быть запросы?И если они не могут быть такими большими, каков следующий лучший способ получить эти идентификаторы?Просто делать то же самое в пакетном режиме?

Для этого мне важнее официально поддерживаемые ограничения, чем то, что происходит в текущих версиях.

Ответы [ 2 ]

3 голосов
/ 24 декабря 2011

Зависит от настроек max_allowed_packet в конфигурации MySQL.Это число байтов, которое может принять ваш сервер MySQL.

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

User.select(:id).where(:email => emails)

И Rails автоматически выполнит запрос IN.

0 голосов
/ 24 декабря 2011

Вы можете сделать это «осколочно» - и вы просто будете ограничены объемом памяти, который у вас есть ...

Например, хранить записи 1..10,000 в Object1 и 10,001.20 000 в Object2 ... и т. Д.

В этом смысле не будет ограничений на длину запроса рельсов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...