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

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.

 
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.


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: 52400 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: 47 | Comentarios: 0 | Archivo: Articulos
Visitas: 109 | Comentarios: 0 | Archivo: Articulos
Visitas: 157 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 34 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS
Visitas: 285 | Comentarios: 1 | Archivo: Articulos
Categorias: Visual Basic .NET|C#
Visitas: 844 | Comentarios: 2 | Archivo: Articulos
Categorias: C#|ASP.NET|HTML DHTML|XML|JavaScript|ASP.NET|ASP|PHP|Visual Studio
Visitas: 712 | Comentarios: 1 | Archivo: Articulos
Categorias: Administración|Tutorial SQL
Visitas: 451 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 1055 | Comentarios: 1 | Archivo: Articulos
Categorias: ASP.NET|CSS|ASP.NET
Visitas: 250 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS

Útimos temas recibidos en los foros ...
autogenerado de sugero social de salud por noemi ... [Visual Basic .NET] 15 29/06/2008
FORMULARIO ACCESS por jcifuentes ... [Access] 11 29/05/2007
Ysmael por Ysmael ... [SQL] 0 08/01/2009
Reflection por Maurito22 ... [C#] 2 06/01/2009
Programador por Robert ... [ORACLE] 0 07/01/2009
como insertar registros en un formulario de visual basic.net desde la base de datos sql server por orlan ... [SQL Server] 8 09/06/2008
quierocodigo de autogenerado del seguro por edwin garcia ramirez ... [Visual Basic .NET] 0 07/01/2009
Video gratis sobre AJAX con ASP.NET por alexxe ... [ASP.NET] 1 06/01/2009
calcular saldo acumulativo por cben ... [SQL] 5 30/12/2008
comparar 2 campos de 2 tablas usando el like por nani ... [SQL Server] 1 06/01/2009
Apagar ordenador remoto en C# por victoryiyo ... [C#] 1 07/01/2009
numero de AUTOGENERADO IPSS por carlos ... [Visual Basic .NET] 5 30/10/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 ...
28/06/2006 Triggers en PL/SQL    forma parte de...Tutorial PL/SQL
01/06/2006 Cursores de actualización en PL/SQL    forma parte de...Tutorial PL/SQL
03/10/2006 Operadores    forma parte de...Tutorial C#
19/08/2006 Virtualización. Maquinas Virtuales.
12/01/2006 Introducción a PLSQL    forma parte de...Tutorial PL/SQL
12/01/2008 SQL dinámico en Transact SQL    forma parte de...Tutorial de Transact SQL
24/07/2006 SQL Dinamico    forma parte de...Tutorial PL/SQL
03/10/2006 Fundamentos de C#    forma parte de...Tutorial C#
21/02/2006 Introducción a .NET
22/10/2005 Consultar datos. SELECT    forma parte de...Tutorial SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]