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 ...
¿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
Vistas

Afiliados
La Web del programador
MundoProgramacion


 

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.


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: 42333 Fecha de publicación: 22/10/2005
Pedro Herrarte, es consultor independiente, ofreciendo sercivios 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.




18/08/2008 SQL Server 2008
Visitas: 39 | Comentarios: 0 | Archivo: Articulos
Categorias: Transact-SQL
Visitas: 131 | Comentarios: 0 | Archivo: Articulos
Categorias: C#|ADO.NET|LinQ
Visitas: 161 | Comentarios: 1 | Archivo: Articulos
Categorias: Humor
Visitas: 154 | Comentarios: 0 | Archivo: Articulos
Categorias: WCF
Visitas: 123 | Comentarios: 0 | Archivo: Articulos
Categorias: WCF
Visitas: 210 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 277 | Comentarios: 5 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 4990 | Comentarios: 4 | Archivo: Articulos
Categorias: C#|Transact-SQL|LinQ
Visitas: 602 | Comentarios: 1 | Archivo: Articulos
Categorias: Visual Studio
Visitas: 1402 | Comentarios: 1 | Archivo: Articulos
Categorias: Transact-SQL

Útimos temas recibidos en los foros ...
Y lo mismo en WEB por systemat ... [C#] 1 18/08/2008
Manual del minicom de Linux con fotos. por Meta ... [UNIX] 4 17/08/2008
PROGRAMACION por JUANMA ... [Visual Basic .NET] 1 19/08/2008
Conectar ASP con B.D Informix por Franco ... [ASP] 9 02/05/2007
Codigo salir por Jazmin ... [ASP.NET] 1 18/08/2008
EXPORTAR DATOS A ARCHIVOS PLANOS. por WIX ... [ORACLE] 10 06/08/2007
formulario por artdark ... [C#] 2 04/08/2008
Codigo salir por Jazmin ... [ASP.NET] 0 18/08/2008
cambiar de modo un gried view por ivan ... [ASP.NET] 0 18/08/2008
ayuda urgente porfavor por vicancer ... [ASP.NET] 0 18/08/2008
pollo por hajaj ... [Actualidad] 1 15/08/2008
DIOS TE BENDIGA por El You ... [WIN 98/NT/2000/XP] 1 16/08/2008

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 ...
01/01/2006 Borrado de datos. DELETE    forma parte de...Tutorial SQL
22/10/2005 Actualización de datos. UPDATE    forma parte de...Tutorial SQL
22/10/2005 Vistas    forma parte de...Tutorial SQL
01/06/2006 Cursores de actualización en PL/SQL    forma parte de...Tutorial PL/SQL
19/09/2007 Triggers en Transact SQL    forma parte de...Tutorial de Transact SQL
03/10/2006 Herencia y métodos virtuales    forma parte de...Tutorial C#
19/10/2005 Configurar el IIS para ejecutar aplicaciones ASP.net
03/10/2006 Programacion con C#    forma parte de...Tutorial C#
28/06/2006 Procedimientos almacenados en PL/SQL    forma parte de...Tutorial PL/SQL
14/05/2007 Fundamentos de Transact SQL    forma parte de...Tutorial de Transact SQL

 

Encuesta
Si trabajas con .NET ¿Que entorno utilizas?
[Ver] [Votar]