Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/08/2008, 08:32
Avatar de Lord Kazuky
Lord Kazuky
 
Fecha de Ingreso: junio-2006
Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 17 años, 10 meses
Puntos: 5
Respuesta: Cuestiones sobre optimización

Saludos!

La teoria dice que al menos cada tabla deberia tener una llave primaria, que es un campo que puede identificar rapidamente a cualquier registro.

En MySQL hay que especificarlo como PRIMARY KEY, y el motor asume ya que es un indice unico.

Ese campo que indicas 'ID' es candidato a ser la llave primaria. ya que es Auto Incremental es evidente que no va a tener registros repetidos.

Ahora en cuanto a los indices es algo que se debe acomodar de acuerdo a algunas restricciones en los campos. (Por ejemplo si hay alguno que pueda ser unico). Y tambien es algo que se debe acomodar segun las experiencias en las consultas a la Base de Datos.

Es decir si alguna consulta SQL a alguna(s) tabla(s) esta tomando mucho tiempo, entonces si se deben pensar en los Indices.

Por lo general los indices se pueden identificar en las consultas SQL, en las condiciones.

ej:

SELECT A.*, B.*
FROM A, B
WHERE A.id = B.id
AND B.parametro > 2

En esta consulta los candidatos para ser indices son las columnas 'id' y 'parametro'.
Si la columna 'id' es una llave primaria, esta ya es un indice.

Por lo general utilizar indices sobre campos numericos o tipos de datos sencillos.

Piensa en los Indices como en los de una guia telefonica o Directorio Telefonico. Ahi tu encuentras los telefonos más rapido gracias a que hay un indice alfabetico (A-Z)

Pero como te digo solo colocar indices cuando sea algo realmente necesario. Ya que colocar indices innecesarios puede hacer el efecto contrario y hacer más lentas tus consultas.

Te dejo ademas dos grandes Links que te serviran demasiado con MySQL:

Curso MySQL:
http://mysql.conclase.net/curso/index.php

Manual MySQL Español:
http://dev.mysql.com/doc/refman/5.0/es/index.html

Saludos!
__________________
Saludos.
"Cualquier tonto puede escribir código que un computador entiende. Los buenos programadores escriben código que los humanos pueden entender. ;)"