Я бег следующего запроса:Оптимизируйте поиск небольшого количества записей из базы данных?
User.where("number > ?", 5).order(&:age).first(20)
Я заметил, что скорость запроса был примерно таким же заменил ли я «первый (20)» с «первыми (200)» или даже просто «первым ». Это, по-видимому, означает, что все записи извлекаются сервером, независимо от того, сколько записей я действительно хочу в массиве. Есть ли способы ускорить этот процесс?
Как 'order', так и' first' будут использовать лимит и создать тот же sql. Вы можете просмотреть запрос в журнале или в консоли, а затем взять sql на консоль db, чтобы «объяснить» его, чтобы изучить использование индекса. Это может быть так же быстро, как и 20, как 200, потому что это не значительная разница. – Swards