InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
Tutorial SQL
Introducción SQL
El lenguaje SQL
Componentes del lenguaje SQL
Tablas
Indices
Vistas
Consultar datos. SELECT
Insertar datos. INSERT
Borrado de datos. DELETE
Actualización de datos. UPDATE
Consultas combinadas. JOINS
Consultas agregadas
Subconsultas
También puedes ver ...
Instalar SQL server enterprise en Vista o XP
¿Qué es el Collation en SQL ?
Como encriptar o cifrar cadenas y campos en SQL server 2005 ENCRYPTBYPASSPHRASE y DECRYPTBYPASSPHRASE
SQL Prompt - Intellisense para SQL Server
Borrado de datos. DELETE
Consultas agregadas
Introducción SQL
El lenguaje SQL
Componentes del lenguaje SQL
Tablas


Lenguaje de definición de datos (II)

Definición de Índices

Un índice es una estructura de datos que permite acceder a diferentes filas de una misma tabla a través de un campo (o campos clave).

Un índice permite un acceso mucho más rápido a los datos.

[arriba]


Introducción a los índices.

Para entender lo que es un índice debemos saber primero como se almacena la información internamente en las tablas de una base de datos. Cada tabla se divide en páginas de datos, imaginemos un libro, podriamos escribirlo en "una sola hoja enorme" al estilo pergamino egipcio, o bien en páginas a las que podemos acceder rápidamente a traves de un índice. Está idea es la que se aplica en el mundo de las bases de datos, la información esta guardada en una tabla (el libro) que tiene muchas hojas de datos (las páginas del libro), con un índice en el que podemos buscar la información que nos interesa.

Si queremos buscar la palabra zapato en un diccionario , ¿qué hacemos?

  • Leemos todo el diccionario hasta encontrar la palabra, con lo que nos habremos leido el diccionario enterito (¡seguro que aprenderiamos un montón!) 
  • Buscamos en el índice en que página está la letra z, y es en esa página donde buscamos.

Ni que decir tiene que la opción dos es la correcta, y es de este modo como se utiliza un índice en las bases de datos, se define el ínidice a través de un campo (o campos) y es a partir de este punto desde donde de busca.

Los índices se actualizan automáticamente cuando realizamos operaciones de escritura en la base de datos. Este es un aspecto muy importante de cara al rendimiento de las operaciones de escritura, ya que además de escribir los datos en la tabla se escribiran también en el indice. Un número elevado de índices hará más lentas estas operaciones. Sin embargo, salvo casos excepcionales, el beneficio que aportan los indices compensa (de largo) esta penalización.

arriba


Creación de índices

La creación de índices, como ya hemos visto, permite acelerar las consultas que se realizan en la base de datos.

Las sentencias de SQL para manipular índices son:


CREATE INDEX
;

DROP INDEX;

La sintaxis para la creación de indices es la siguiente:


CREATE
[UNIQUE] INDEX <nombre_indice>
ON <nombre_tabla>(
<nombre_campo> [ASC | DESC]
                  {,<nombre_campo> [ASC | DESC]})
                  );

La pálabra clave UNIQUE especifica que que no pueden existir claves duplicadas en el índice.
ASC | DESC especifican el criterio de ordenación elegido, ascendente o descendente, por defecto es ascendente.

Ejemplo: En el apartado dedicado a la definición de tablas creamos la tabla tClientes, este ejmplo crea un índice único en el campo NIF. Esto nos permitirá buscar mucho mas rápido por el campo NIF y nos asegurará que no tengamos dos NIF iguales.


CREATE UNIQUE INDEX
UIX_CLIENTES_NIF
ON tCLIENTES (NIF);

Las claves primarias son índices.

Los nombres de los índices deben ser únicos.

Para eliminar un índice debemos emplear la sentencia DROP INDEX.


DROP INDEX
<nombre_tabla>.<nombre_indice>;

Ejemplo:Para eliminar el índice creado anteriormente.


DROP INDEX
tCLIENTES.UIX_CLIENTES_NIF;

arriba



Inicio | Tutorial SQL TablasTutorial SQL Vistas Versión para imprimir Foros de consulta

 
MUY BUENO por EDWARD
Respuesta recibida el [29/05/2007 02:07:12]
Sencillo eh informativo, sin mucho rollo

 
Buenisimo por 37°
Respuesta recibida el [10/06/2007 08:57:59]
Mañana tengo un examen y no sabia nada de los indices, me acabas de salvar la vida xD, bien explicado y sin dar vueltas, es perfecto

 
Perfecta explicacion por Martin Gorosito
Respuesta recibida el [03/07/2007 11:40:11]
Tenia algo de idea de lo que podría llegar a ser un índice, pero con esta explicación resolví todas mis dudas de como actúan.

 
base de datos de sql server por pedro herrarte sanchez
Respuesta recibida el [20/08/2007 12:46:43]
 ejemplos para crear vistas

 
Cortito y muy Concreto por Jorge Chip
Respuesta recibida el [23/10/2007 12:32:39]
Tenia un trabajo y con lo que vi y sus ejemplos creo que sali de mis dudas. Gracias

 
HELP !! por FNG
Respuesta recibida el [30/10/2007 12:46:52]
QUE ES PL-SQL ?

 
Enrollo por EDOP
Respuesta recibida el [09/02/2008 10:24:10]
LOS indices ME PARECIA UN ROLLO, ahora lo veo, el rollo era yo?

gracias

 
Sin titulo por Andrea
Respuesta recibida el [15/02/2008 08:37:14]
Quiero conocer a Pedro Herrarte Sánchez, que bello es! Comence viendo la pagina para aprender ahora estoy enamorada jajajaja.  La pagina es excelente. Te felicito

 
Gracias por Luis Felipe
Respuesta recibida el [03/03/2008 01:52:51]
Gracias muy bien, poco pero del bueno.

 
Gracias!!!! por jid
Respuesta recibida el [21/04/2008 07:42:06]
Gracias por la ayuda mi brother gracias!!!!

 
indices por djk
Respuesta recibida el [23/04/2008 10:27:27]
Apartado flojisimo

 
Pregunta por Eagle007
Respuesta recibida el [10/06/2008 09:48:17]
Existe alguna forma de descargar en pdf o en algun formato para estudiarlo offline.
Saludos

 
Romper un indice por oskofo
Respuesta recibida el [25/06/2008 03:27:35]
Buenas..
Deseaba hacer la siguiente consulta.
Tengo entendido que en una consulta
por ejemplo:
select * from tabla
where nro_cuenta = cuenta

Si existe un indice por nro_cuenta, al adherirle un espacio detrás, no entrará por indice, es esto correcto?
Es decir:
select * from tabla
where nro_cuenta=cuenta||" "
Tambien deseaba saber si se rompe el índice si hago una comparación por > o <
Es decir:
select * from tabla
where nro_cuenta > cuenta
Gracias x su ayuda.
Saludos!

oskofo (oskfosc@hotmail.com)

 
Para "oskofo" .. el indice dej... por devjoker
Respuesta recibida el [25/06/2008 03:33:52]
Para "oskofo" .. el indice deja de usarse si se modica el campo, no el valor. Me explico:
La siguiente consulta usa el indice por nro_cuenta.
select * from tablawhere
nro_cuenta=cuenta||" "
Si embargo la siguiente consulta no usaría el indice:
select * from tablawhere
nro_cuenta||" "=cuenta

Lo de la comparacion mayor o menor sencillamente no es cierta.

 
EL CODIGO DEL BALON por RONALDO DE LIMA
Respuesta recibida el [26/09/2008 03:36:42]
NECESITO CODIGO PARA MI BALON DE FUTBOL`LLAMAR A EL NUMERO # 
GRACIAS

 
Q ES SQL por WENDY JIMENEZ CANAL CARACOL CHILE PERDON COLOMBIA
Respuesta recibida el [26/09/2008 03:39:02]
COMO CANTAR EN CODIGO SQL

 
Graciaz por Machita
Respuesta recibida el [30/09/2008 06:45:13]
chevre claro y preciso .. me sirvio bastante .. Gracias

 
Thank`s por Alan
Respuesta recibida el [15/10/2008 01:12:54]
gracias esta muy claro 

 
Duda?? por KGS_II
Respuesta recibida el [21/10/2008 01:48:47]
Que sucede Fisicamente cuando tengo un indice agrupado(clustered) y se interta un nuevo registro a mitad de una tabla???
Bn mi duda es que si fisicamente en disco los demas regristros son desplazados para darle lugar al nuevo registro insertado debido al Index clustered.

 
Para KGS_II por devjoker
Respuesta recibida el [21/10/2008 03:15:15]
Cuando sobre un indice agrupado se inserta un nuevo registro a mitad de tabla pueden pasar dos cosas:
1. Que la página de datos disponga de espacio suficiente y pueda insertar el registro. Cuando creamos una tabla le indicamos el porcentaje de espacio que van a ocupar los datos en la página de datos. El espacio que se deja libre las páginas de datos se controla con el "factor de relleno" - fillfactor - que creo recordar que por defecto está al 80%.

2. Que no tenga espacio y tenga que "partir la página en dos". Esta operación se conoce como "división de página" y es con mucho la operación mas costosa posible.

Esto es cierto para SQL Server, para otras bases de datos no sé decirte pero creo que no debe variar mucho.

 
lol por lol
Respuesta recibida el [04/11/2008 07:53:13]
te amo

 
estoy cagator por yo
Respuesta recibida el [20/11/2008 06:53:20]
estoy en examen consultando esto estoy cagator

 
como guadar imagenes en SQL 2005 por Brenda
Respuesta recibida el [28/11/2008 11:13:57]
Hola me urge saber como guardar una imagen a SQL express 2005 y llamarla a través de Visual basic 2005.

Ayudenme. Gracias

 
Very Good por CT
Respuesta recibida el [04/12/2008 08:23:21]
Esta información aunq es muy sencilla es bastante explicativa sobre todo para los que se inician en este mundo del sql y el manejo de base de datos. Excelente aporte Saludos

 
Indice en particiones por Orate
Respuesta recibida el [04/12/2008 01:41:27]
estoy con un terrible problema, tengo una tabla particionada por el campo fecha (ddmmyy) y necesito crear indices para cada particion, estuve buscando por muchos lados y no consegui como crear los indices para las particiones de mi tabla, alguna sugerencia???

Gracias.

 
genial!!! por Yolis
Respuesta recibida el [11/01/2009 03:52:59]
muy bien chico!!! informacion genial para principiantes en SQL o en cualquier manejador de BD... muy buen resumen

 
Super bueno por Chisto
Respuesta recibida el [28/01/2009 08:38:57]
Me mate 1 semana por que la consulta me tomaba 2 segundos, y ahora toma 31ms =D. Gracias

 
Eres el maestro perfecto por frank
Respuesta recibida el [25/02/2009 03:46:46]
Esta es la mejor manera de aprender SQL.

 
Anonimo d por para Frank
Respuesta recibida el [12/03/2009 05:23:08]
deja de ser chupon MARIK

 
Excelente por Egaa
Respuesta recibida el [23/03/2009 06:28:53]
Muy buena explicacion

 
bueno por Romel Lara
Respuesta recibida el [02/09/2009 03:05:53]
quqe bien las explicaciones
soy una p ersona que quiere aprender , me podrian dar direcciones electronicas para poder dirigirme a ellas. gracias

 
Gracias!! por marco luna
Respuesta recibida el [27/10/2009 02:27:08]
Muchas gracias!! No habia encontrado una forma tan sencilla de explicar los índices. :-)

 
Null por San
Respuesta recibida el [10/11/2009 02:37:00]
Cree un indice para varios campos, el select para el que deseo aplicarlo va mas o menos asi:

select c1, c2, c3
from t1
where c2 is null
and c3 is null;

es correcto?, como debería hacerlo?
El indice esta creado en los campos c2 y c3.

 
Excelente explicacion por Braulio
Respuesta recibida el [20/01/2010 05:04:31]
Gracias pana por el aporte, realmente sirve de mucho.

 
IDIOTEZ por Pinky-Winky
Respuesta recibida el [24/02/2010 12:08:07]
Vaya idiotez que acabas de escribir , macho.
¿ Y los indices BITMAP ? ¿ Y los indices basados en funciones ? ¿ Que es un B-TREE ? ¿ La regla 5-95 ?


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial SQL TablasTutorial SQL Vistas Versión para imprimir

Indices
Autor: Pedro Herrarte Sánchez
Visitas: 88583 Fecha de publicación: 22/10/2005
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.




Visitas: 94 | Comentarios: 2 | Archivo: Articulos
02/02/2010 iPad vs Telesketch
Visitas: 796 | Comentarios: 2 | Archivo: Articulos
Categorias: Humor
Visitas: 752 | Comentarios: 3 | Archivo: Articulos
Visitas: 3153 | Comentarios: 2 | Archivo: Articulos
Categorias: C#
Visitas: 14516 | Comentarios: 7 | Archivo: Articulos
Categorias: C#|Seguridad
Visitas: 1483 | Comentarios: 3 | Archivo: Articulos
Visitas: 692 | Comentarios: 2 | Archivo: Articulos
Visitas: 369 | Comentarios: 0 | Archivo: Articulos
Visitas: 2021 | Comentarios: 2 | Archivo: Articulos
Categorias: C#

Útimos temas recibidos en los foros ...
pensiones por 29285524 ... [Access] 0 12/03/2010
certificado de porvenir por labar ... [Actualidad] 23 02/03/2010
Certificado de afiliacion Pensiones y Cesantias por VIVIANA ... [Actualidad] 2 10/03/2010
AYUDA COMANDOS BASICOS MSDOS!! por (L)MSDOS(L) ... [MS DOS] 24 12/03/2010
mananis por mananis ... [Actualidad] 0 12/03/2010
CERTIFICADO DE PENSIONES Y CESANTIAS PORVENIR por ABELLO ... [Actualidad] 0 12/03/2010
Solicitud certificado de afiliaciones a pensiones y cesantias proteccion por hz ... [Actualidad] 55 10/02/2010
certificado de pensiones y cesantias que me exigen para trabajar por viviana ... [Actualidad] 1 12/03/2010
Certificado de pensiones por liliana ... [Actualidad] 0 12/03/2010
certificado de afiliación de pensiones y cesantias por secre ... [Actualidad] 114 28/01/2010
certificado de pensiones horizonte por carla ... [Actualidad] 21 16/02/2010
certificado de pensiones del bbva horizonte por danger ... [Actualidad] 123 12/01/2010

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
10/07/2006 Subprogramas en PL/SQL    forma parte de...Tutorial PL/SQL
17/07/2006 Tipo VARRAY    forma parte de...Tutorial PL/SQL
28/11/2006 Definición de nuevos atributos    forma parte de...Tutorial C#
31/03/2006 Operadores en PL/SQL    forma parte de...Tutorial PL/SQL
28/06/2006 Propagacion de excepciones en PL/SQL    forma parte de...Tutorial PL/SQL
10/10/2006 Como conectar a ORACLE con Java
22/10/2005 Insertar datos. INSERT    forma parte de...Tutorial SQL
17/10/2006 Excepciones personalizadas en PL/SQL    forma parte de...Tutorial PL/SQL
19/09/2007 Triggers en Transact SQL    forma parte de...Tutorial de Transact SQL
03/04/2008 Métodos Extensores: SELECT    forma parte de...Linq y Métodos extensores

 

Encuesta
¿A que perfil te adaptas mejor?




[Ver] [Votar]