Asunto: Diferencia entre índices btree, rtree y hash
Estoy creando algunas tablas en MySQL Server 5.1.4, a la hora de crear un índice veo que hay de varios tipos: BTREE, RTREE y HASH ¿cuál es la diferencia entre ellos?
La tabla que estoy creando es algo así:
Código:
CREATE TABLE factura (
codigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
fecha DATE,
importe FLOAT,
codigocliente INTEGER UNSIGNED NOT NULL,
numero VARCHAR(20) NOT NULL,
PRIMARY KEY (codigo),
UNIQUE INDEX ind_factura_numero USING BTREE (numero)
)
ENGINE = InnoDB;
Publicado:
Mar Nov 03, 2009 6:23 am
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Diferencia entre índices btree, rtree y hash
Anuncios
varios escribió:
Estoy creando algunas tablas en MySQL Server 5.1.4, a la hora de crear un índice veo que hay de varios tipos: BTREE, RTREE y HASH ¿cuál es la diferencia entre ellos?
La tabla que estoy creando es algo así:
Código:
CREATE TABLE factura (
codigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
fecha DATE,
importe FLOAT,
codigocliente INTEGER UNSIGNED NOT NULL,
numero VARCHAR(20) NOT NULL,
PRIMARY KEY (codigo),
UNIQUE INDEX ind_factura_numero USING BTREE (numero)
)
ENGINE = InnoDB;
BTREE, RTREE, HASH son tipos de indexación. En realidad BTREE y RTREE son dos tipos de árboles binarios.
Entrar en las diferencias es complicado, se trata de estructuras de árboles, de matemáticas.
Es más sencillo esto que te vamos a comentar: si utilizas el tipo de tecnología de almacenamiento InnoDB, sólo soporta índices de tipo BTREE. Si utilizases MyISAM como tecnología de almacenamiento, éste admite índices de tipo BTREE y RTREE. Según el libro [k]Pro MySQL[/k] de Michael Kruckenberg y Jay Pipes, el tipo de índice RTREE se utiliza principalmente para tipos de datos espaciales (coordenadas geográficas). En el siguiente artículo tienes más información sobre los tipos de datos (data types) de MySQL:
Por lo que, en resumidas cuentas, casi siempre utilizarás BTREE como tipo de índice. De hecho, si utilizas "MySQL Administrator", cuando creas una tabla MySQL verás que si dejas el tipo de índice como DEFAULT, te pondrá BTREE de forma automática.
En la propia web de MySQL, en la URL:
dev.mysql.com/doc/refman/5.0/en/create-index.html
Podrás ver que, efectivamente: "The RTREE index type is allowable only for SPATIAL indexes" traducido: "El tipo de índice RTREE está sólo disponible en índices espaciales".
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A