MySQL - Ayuda con índices compuestos

   
Vista:

Ayuda con índices compuestos

Publicado por Matias (1 intervención) el 02/02/2009 16:08:29
Hola gente, estoy trabajando sobre un base de datos mysql y tengo un problema de concepto para definir los índices de una tabla. La estructura de la tabla es la siguiente:

Tabla Ordenanzas:
- nro_ordenanza INT sin autoincremento (clave primaria)
- descripcion TEXT
- texto TEXT
- fecha_sancion INT
- vigente TINYINT(1) Indica si la ordenanza está en vigencia o no
- publicada TINYINT(1) Indica si la ordenanza ha sido publicada o no
... (otros campos q no vienen al caso)

Los índices que hasta ahora tengo son los siguientes:
- "PRIMARIO" sobre el campo "nro_ordenanza"
- "idx_texto" sobre el campo "texto", tipo FULLTEXT

Necesito definir los demás índices para acelerar la búsqueda. Uno de los problemas con los que me encontré fue el siguiente:
Un usuario que hace una búsqueda por número de ordenanza, que está vigente y ha sido publicada (siempre un usuario externo ve sólo las publicadas), es decir,

SELECT * FROM Ordenanzas WHERE nro_ordenanza=1000 AND vigente=1 AND publicada=1

necesitaría definir un índice compuesto que incluya las columnas "vigente", "publicada" y "nro_ordenanza"?
Que pasa si el usuario busca por número de ordenanza, publicada, pero sin importar si está vigente o no, es decir,

SELECT * FROM Ordenanzas WHERE nro_ordenanza=1000 AND publicada=1

necesito definir otro índice compuesto con "publicada" y "nro_ordenanza", sin incluir "vigente", o con el índice anterior es suficiente?

Desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con índices compuestos

Publicado por Emiliano (98 intervenciones) el 02/02/2009 18:26:37
Esta pagina es cortita y bien explicada y justo responde todo lo que vos preguntas.

http://www.webtaller.com/construccion/lenguajes/mysql/lecciones/indices-mysql.php

Espero que te sirva suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con índices compuestos

Publicado por Juan Manuel Castañeda (59 intervenciones) el 03/02/2009 23:40:36
Cree un indice compuesto para vigeete y publicacda
SELECT vignete,publicada,NRO_ORDENANZA FROM orfenanzas WHERE vigennte=1 AND publicada=1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con índices compuestos

Publicado por Juan Manuel Castaneda (59 intervenciones) el 04/02/2009 22:55:06
Select NRO_ORDENANZA FROM ordenanzas WHERE nro_ordenanza IN (Select * FROM ORDENANZAS WHERE vigennte=1 AND publicada=1)
Si la version de MySQL que ud. utiliza soporta subselect
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con índices compuestos

Publicado por pedrinchixx (1 intervención) el 16/04/2009 23:07:56
el indice compuesto te quedaria

ALTER TABLE Ordenanzas ADD INDEX idx_nombre(publicada, nro_ordenanza);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar