working with models, efficent queries..

i have a model with 35000 entries in the database. I was using a unique string as the primary key. Right now I am using the order method to return the model objects in order. I’d like to know what is good practice ( efficient ) and how to return X entries at a time instead of all at once. Right now I’m using the index method of a controller along with the order method to return the entries, and then iterating through them in the view.

class StoreController < ApplicationController def index @dicts = Dict.order(:key) end end

Store#index

Find me in app/views/store/index.html.erb

<% @dicts.each do |word| %>
<%= word.key %>
<%end %>

I’d also like to know a little more about how conrtrollers work with the database. Is a new store controller instanced everytime a route is directed to it? If so am I continually querying the database for those 35000 entries, or is one instance of the controller generated, and one request made. I have read some of the rails guides, and read quite a bit of agile web dev with rails 4, but haven’t found the answer to my questions. Do you think you know a reference you would recommend I read?

You need pagination, visit this 1

i have a model with 35000 entries in the database. I was using a unique string as the primary key. Right now I am using the order method to return the model objects in order. I’d like to know what is good practice ( efficient ) and how to return X entries at a time instead of all at once. Right now I’m using the index method of a controller along with the order method to return the entries, and then iterating through them in the view.

Typically you load one page of results at a time. kaminari and will_paginate are 2 popular ways of doing this. Under the hood they are just setting limit and offset query

I’d also like to know a little more about how conrtrollers work with the database. Is a new store controller instanced everytime a route is directed to it? If so am I continually querying the database for those 35000 entries, or is one instance of the controller generated, and one request made. I have read some of the rails guides, and read quite a bit of agile web dev with rails 4, but haven’t found the answer to my questions. Do

a new controller is instantiated with each request. so your code hits the database for every single page view (which you can easily prove to yourself by adding a breakpoint or logger statements to the body of your controller method or watching the queries stack up in the log file

Fred