Seleccionar en las consultas reduce el tráfico con la base de datos

Post date: Aug 27, 2010 4:02:59 AM

Una vez que tu sitio web escrito en Ruby on Rails está funcionando viene el proceso de mejoras, tanto en la presentación como en el tiempo de respuesta. Malos tiempos de respuesta pueden estar ligados a factores del ambiente que rodea a la aplicación tales como las prestaciones del servidor, su ancho de banda, etc. pero otros factores pueden ser responsabilidad de la aplicación y uno importante es la relación entre la base de datos y la aplicación.

Hoy nos enfocaremos en la obtención de datos desde el servidor de bases de datos. Es usual que cuando necesitamos datos de un usuario realicemos una consulta, obtengamos los registros bajo la forma de objetos y de allí tomemos lo que nos hace falta.

@users = User.find(:all, :conditions => ["username like ?", "A%"])

Esta operación puede representar un alto tráfico de información entre el servidor de bases de datos y la aplicación, sobre todo en el caso en el que sólo nos interesa por ejemplo el nombre del usuario y su país de origen pero no los otros 15 campos de nuestro completo registro de usuarios. Aquí estamos pagando la facilidad de ver los registros de usuario como objetos en tráfico de información, creación de objetos, etc. En estos casos es preferible traer únicamente los campos indispensables de cada registro usando el atributo :select del método find:

@users = User.find(:all, :select => "username, counry", :conditions => ["username like ?", "A%"])

Con esta consulta, el arreglo users tendrá sólo los pares de valores que nos interesan y el tiempo de respuesta de la aplicación web se verá beneficiado.

Enlaces relacionados

  1. 9 Essential Rails Tips fortytwo.gr.

Cursos relacionados

  1. Ruby on Rails básico