Programación > Manuales

Optimizar Consultas SQL

<< < (2/2)

alazar:
Mmm, ¿alguien puede poner una página donde se explique eso de los bindings en detalle? Gracias^^

Konoka:
Muy interesante, la verdad.

Arikel:
Bueno no importara mucho si reavivo el tema ya que esta sección no se usa casi, en la sección staff había unas guías sobre esto que hizo Xati creo recordar, si alguien quiere mover el tema aquí le servira de ayuda a quien lo necesite.

WikiTek:

--- Cita de: pepeluty en 17 de Junio de 2009, 22:38:18 pm ---Otra genial idea de optimizar una búsqueda sql en una tabla de muchos registros es la creación de índices por ejemplo:

Una clave primaria en una tabla es un índice natural de valor único, pero puede pasar que nuestras búsquedas no sean acorde con las claves primarias y sean por nombres, apellidos, números de teléfono etc. Al realizar una consulta en base a un “nombre” o parte de él, la tabla será leída de forma total por el motor de base de datos buscando en cada registro el nombre en particular. Esto es un gran esfuerzo para el motor de DB cuando hablamos de miles y miles de registros, los índices es la solución.

Ejemplo de creación de indicen en una tabla (Mysql en caso de ragnarok)

CREATE INDEX [nombre de índice]
ON [nombre de la tabla] (campo de la tabla);

Con esto el motor agrupara los registros del campo de la tabla (en este caso nombre) de forma numérica, alfabética o alfanumérica creando una categorización ej:

Si se desea buscar el nombre “jose” lo buscara en los registros marcados en negrita, los demás los ignorara:

Usuario (nombre de la tabla)
      Nombre (campo de la tabla)
              Jose
              Jorge
              Juan
              Alberto
              Aldo
              claudio

Los índices pueden ser agrupados con distintos campos. No es aconsejable crear índices si la tabla posee pocos registros

--- Fin de la cita ---
No se recomienda hacer una llave compuesta con una palabra, le pega mucho al performance.
Ya que estoy aquí, eviten el uso del distinct o de querys anidados, pero a veces se necesitan :(.


--- Cita de: Canuto en 13 de Julio de 2009, 19:02:21 pm ---Ojo, no es bueno crear varios indices. solo los necesarios. En el caso de mysql para buscar cadenas existe un tipo de indice llamado full text. Pero solo esta disponible para tablas del tipo Myisan (tablas no relacionales). También para relacionar tablas en una consulta es bueno usar "join" y no la simple relacion where a.campo = b.campo, por lo general where se debe usar únicamente para filtrar data mas no para relacionar tablas.

--- Fin de la cita ---
Sin ofender, el consejo es retorico, en todo momento sólo se debe crear lo necesario, pero se deben crear tantos indices de acuerdo a los parámetros de búsqueda que se quiera tener.

Un consejo muy útil y que los de la universidad me van a tachar de loco es de:
Las reglas normales NO siempre aplican, cuando estén manejando millones de registros. En la teoría funciona muy bonito, pero cuando hablamos de 100 o 200 millones de registros, hacer una búsqueda normalizada puede llevarte unos minutos y sin normalizar 1~5 segundos.
Traten de no usar tablas temporales, si son bonitas, son fáciles de usar, pero son innecesarias en la mayoría de los casos, por regla de estandares, se debe de evitar, pero esto no es una ley, sólo es un consejo de acuerdo con las mejores practicas de CMMI.

Fuente: YO
DB2 Database Analyst
Oracle Certified Master

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa