Почему MyModel.offset (n) .find (20) так медленно в Rails 3 с MySQL? - PullRequest
1 голос
/ 21 августа 2011

Я использую Rails 3 и MySQL

У меня есть несколько ситуаций, когда я хочу извлечь первый кусок записей из моей таблицы моделей, например:

MyModel.offset(10).first(50)

Если я запускаю это в консоли rails, Rails & MySQL просто останавливается.

Если я посмотрю файл журнала во время запуска в консоли, я получу следующее !!

SELECT `my_models`.* FROM `my_models` LIMIT 18446744073709551615 OFFSET 10

вместо

SELECT * from my_models LIMIT 50 offset 10

Кажется, что-то не так с оператором LIMIT . У меня что-то настроено неправильно?

1 Ответ

1 голос
/ 10 сентября 2011

Определенно странная ошибка.Я подтвердил это в Rails 3.0.10 и 3.1.0.Из того, что я могу сказать, вы не должны передавать число первым, так что поведение, когда вы это делаете, может быть неопределенным, но я бы сказал, что это плохая разновидность неопределенности.

Что выхочу сделать это MyModel.offset (10) .limit (50).ActiveRecord :: Base # first следует использовать, только если вы хотите, чтобы выполнялся запрос «LIMIT 1».

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

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