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.

 
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


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: 45883 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.




Visitas: 132 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 56 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 172 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 705 | Comentarios: 0 | Archivo: Articulos
Categorias: C#
Visitas: 176 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET
Visitas: 618 | Comentarios: 0 | Archivo: Articulos
Categorias: Windows XP|Linux|Windows Vista
Visitas: 404 | Comentarios: 0 | Archivo: Articulos
Categorias: Linux|BSD
Visitas: 213 | Comentarios: 0 | Archivo: Articulos
Categorias: Programación|Actualidad
18/08/2008 SQL Server 2008
Visitas: 1029 | Comentarios: 1 | Archivo: Articulos
Categorias: Transact-SQL
Visitas: 728 | Comentarios: 0 | Archivo: Articulos
Categorias: C#|ADO.NET|LinQ

Útimos temas recibidos en los foros ...
Crear una sesion de inicio por jhors ... [ASP.NET] 1 06/10/2008
Enviar email a correos cmo hotmail por Cajami ... [C#] 13 06/09/2007
Como mandar mensaje a Celular por Pako ... [C#] 23 13/03/2007
Casting por sara ... [Java] 1 06/10/2008
ORA-22288: file or LOB operation GetLength failed por heroga ... [ORACLE] 1 05/08/2008
Galeria de imagenes en Visual Web Developer por luis ... [ASP.NET] 0 06/10/2008
utilizar un ObjectDataSource por mari90 ... [ASP.NET] 4 25/10/2006
Llamar procedimientos almacenados por elmago ... [C#] 1 04/10/2008
Procesos huerfanos por cesarf283 ... [SQL Server] 2 11/07/2007
numero autogenerado por lucho ... [Visual Basic .NET] 17 10/01/2007
PUNTO DE VENTA por TIBURON ... [Access] 0 04/10/2008
Curso Visual Basic .NET en vídeo por martaz ... [Visual Basic .NET] 4 08/11/2007

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 ...
24/05/2007 Tipos de datos en Transact SQL    forma parte de...Tutorial de Transact SQL
12/01/2006 Introducción a PLSQL    forma parte de...Tutorial PL/SQL
03/06/2008 Formatear números en SQL Server
21/11/2007 Desencriptar Texto y variables con .NET VB y C# (segunda parte)
10/07/2006 Subprogramas en PL/SQL    forma parte de...Tutorial PL/SQL
24/05/2006 Cursores Implicitos en PL/SQL    forma parte de...Tutorial PL/SQL
21/07/2006 Funciones integradas de PL/SQL    forma parte de...Tutorial PL/SQL
20/03/2008 Funciones integradas de Transact SQL (I)    forma parte de...Tutorial de Transact SQL
28/06/2006 Propagacion de excepciones en PL/SQL    forma parte de...Tutorial PL/SQL
26/07/2006 PL/SQL y Java    forma parte de...Tutorial PL/SQL

 

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