Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

En que consiste un indexeo de tablas?

Estas en el tema de En que consiste un indexeo de tablas? en el foro de SQL Server en Foros del Web. Hola, no se nada de esto y me gustaria saber, en que consiste indexear las tablas, para que es, como se hace y de que ...
  #1 (permalink)  
Antiguo 06/07/2011, 11:28
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
En que consiste un indexeo de tablas?

Hola, no se nada de esto y me gustaria saber, en que consiste indexear las tablas, para que es, como se hace y de que sirve.
Es muy complejo?
SALUDOS!
  #2 (permalink)  
Antiguo 06/07/2011, 11:31
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: En que consiste un indexeo de tablas?

Bueno, hay mucho por leer en GOOGLE, pero un INDICE es un "apuntador logico" a los datos, para realizar las busquedas mas eficientemente.

Te aconsejo que busques el tema en SAN GOOGLE....
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 06/07/2011, 13:51
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: En que consiste un indexeo de tablas?

Hola IISLAS, gracias por responder, ya he buscado en google pero no he encontrado lo que quieroo y en unos son muy tecnicos como por ejemplo esto:
Código SQL:
Ver original
  1. CREATE INDEX NOMBRE_INDICE ON TABLA(CAMPOS)
  2.  
  3. o cra un indice primario:
  4.  
  5. CREATE INDEX NOMBRE_INDICE ON TABLA(CAMPOS) PRIMARY
Lo que quiero saber como se hace en sql server y si puedo afectar algo etc...
  #4 (permalink)  
Antiguo 06/07/2011, 14:36
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: En que consiste un indexeo de tablas?

Te voy a platicar un ejemplo, que siempre digo, cuando me preguntan que es un INDICE.

Si vas a buscar al Dr. Jimenez, en un edificio, donde no hay DIRECTORIO y no hay recepcionista, ni policia a la entrada y no llevas la direccion de su despacho, ¿que harias?

Tocar de piso en piso, despacho por despacho, por el Dr. Jimenez, como bien, te lo puedes encontrar en el piso 1, despcho 101 o bien podrias llegar al piso 15, despacho 909 y no dar con el, ¿cierto?

Bueno, pues para eso sirven los INDICES en las tablas, para no "recorrer registro por registro (scan)", simplemente, cuando buscas al "Dr. Jimenez" y si hay un indice en tu tabla por ese campo, la busqueda se hara de forma DIRECTA.

¿Que afectas?, Nada

A menos claro, que crees INDICES sin razon alguna.

Hay una teoria no escrita que dice, "Todas los campos colocados despues del WHERE, son candidatos a ser indices".

Si buscas en una tabla de MILLONES DE REGISTROS sin indice, el motor debera ir comparando registro por registro, el filtro (where) que tu has colocado, a este efecto se le conoce como SCAN.

En cambio, si tu tabla, tiene un indice por los campos despues del where, la busqueda seria mucho, pero mucho mas rapida.

Espero haberme explicado.

Saludos
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 06/07/2011, 15:41
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: En que consiste un indexeo de tablas?

Entonces los indices son por campo y no por registro???' ya me quedo mas claro solo quiero saber eso.
Esque tengo un problema, una gringa reviso nuestras bases de datos ya que tenemos problemas con ella y nos mando a decir esto:
Cita:
Hello,

The speed of loading the tools is based on database size, index fragmentation, and processing power. The first recommendation to speed processing would be server maintenance, reindexing the tables when the site is not running is highly recommended.

I have reindexed a few of your key growth tables, but server maintenance is the responsibility of the site. If you have a down period that you would like me to enable a task to run a job to reindex, please submit an RFC for this automatic job to be enabled. Otherwise, please ask your SQL Server Support team to perform database maintenance. If you need Fortech to provide this maintenance, please send a request to [email protected] for a proposal to perform this maintenance for you when the site will be down.
Crees tu que con los indices podemos solucionar esto?
Saludos
  #6 (permalink)  
Antiguo 06/07/2011, 18:20
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: En que consiste un indexeo de tablas?

En pocas palabras, LOS INDICES, se crean por campo (o suma de campos, indices compuestos).

Claro esta que una tabla que tiene indices, pero a su vez es de actualizacion constante (insert, update, delete), sus indices se van CORROMPIENDO.

¿Que hay que hacer?

Lo que la "gringa" te dice, es que detecto que tienes muy DEFRAGMENTADOS (dañados) tus indices, entonces, hay que RE-CREARLOS.

¿Como?

Si tienes version 2005 o superior:

-- Ejecutar por cada base de datos
exec sp_msforeachtable 'ALTER INDEX ALL ON ? REBUILD WITH (FILLFACTOR = 80)'
-- Al terminar, actualizar estadisticos
exec sp_updatestats

Con esto, te aseguras que tus indices, se les ha dado MANTENIMIENTO

¿Cada cuando?

Al menos deberias tener un job que lo hiciera cada SEMANA, me temo que no tienes mucha experiencia en el manejo de SQL SERVER.
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 07/07/2011, 09:08
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: En que consiste un indexeo de tablas?

Hola IIslas, gracias por tu apóyo, ejecute esto en el servidor y me sale:
Cita:
The statement has been terminated.
Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
Sabes que sera? si es por que el servidor esta actualmente en produccion o algo por el estilo?
Saludos

  #8 (permalink)  
Antiguo 07/07/2011, 09:58
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: En que consiste un indexeo de tablas?

Deberias revisar si ya tienes aplicado tu ultimo service pack, ejecuta esto:

SELECT
CAST( SERVERPROPERTY( 'MachineName' ) AS varchar( 30 ) ) AS MachineName ,
CAST( SERVERPROPERTY( 'InstanceName' ) AS varchar( 30 ) ) AS Instance ,
CAST( SERVERPROPERTY( 'ProductVersion' ) AS varchar( 30 ) ) AS ProductVersion ,
CAST( SERVERPROPERTY( 'ProductLevel' ) AS varchar( 30 ) ) AS ProductLevel ,
CAST( SERVERPROPERTY( 'Edition' ) AS varchar( 30 ) ) AS Edition ,
( CASE SERVERPROPERTY( 'EngineEdition')
WHEN 1 THEN 'Personal or Desktop'
WHEN 2 THEN 'Standard'
WHEN 3 THEN 'Enterprise'
END ) AS EngineType ,
CAST( SERVERPROPERTY( 'LicenseType' ) AS varchar( 30 ) ) AS LicenseType ,
SERVERPROPERTY( 'NumLicenses' ) AS #Licenses;


Referencia:
http://support.microsoft.com/kb/910416
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 07/07/2011, 11:50
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: En que consiste un indexeo de tablas?

Hola,
Tenemos el SP2 tal y como lo regresa el script que me pasaste:
  #10 (permalink)  
Antiguo 08/07/2011, 10:56
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: En que consiste un indexeo de tablas?

Ejecuta:

DBCC CHECKDB (<Database Name>) WITH NO_INFOMSGS, ALL_ERRORMSGS
__________________
MCTS Isaias Islas

Etiquetas: tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:55.