Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Skeletron en 11 Enero 2011, 01:50 am



Título: Recomendaciones para Optimizar INDEX
Publicado por: Skeletron en 11 Enero 2011, 01:50 am
Hola gente.
Resulta que me pasa lo siguiente:
(Aclaro, que la base de datos no tiene muchos registros, pero espero que pronto tenga millones.. :) )

Tengo una tabla, donde guardo LOS ARTICULOS que tiene un USUARIO.
En total, hay unos 25 articulos disponibles. O sea que un usuario no puede tener mas de 25 articulos. Puede tener 0, 1, 2, etc, hasta 25.
La tabla tiene:
id_articulo
id_usuario

Usuarios, supongamos que tengo 1.000.000 (jaja.. me rio de mi.. tengo 2 nomas.. pero bueno... quiero empezar haciendo las cosas bien desde el comienzo).

La cuestion, es que SIEMPRE se va a buscar QUE ARTICULOS TIENE EL USUARIO: X.
Aunqueeeeeee, muchas muchas veces se va a buscar si X usuario tiene X articulo.

La consulta mas comun es: SELECT 1 FROM articulosdeusuarios WHERE id_usuario=123
Y una que aparecerá muchas veces tambien (pero menos que la anterior) es: SELECT 1 FROM articulosdeusuarios WHERE id_usuario=123 AND id_articulo=5

Como me recomiendan hacer los indices?
Sé que importa mucho si hago 2 indices separados, o uno complejo de id_usuario y id_articulo. y supongo que es diferente poner usuario y articulo, que poner: articulo y usuario.

Así que. estaría bueno resolver esta duda :D

Yo me formulo en la cabeza esta pregunta:
"Que le gustará mas al motor? que a la hora de realizar la busqueda, tenga que listar primero los articulos y luego buscar entre ellos el usuario X? o acomodar todo por X usuario y luego ver si tiene el articulo?"

Yo pienso que:
Si creo 2 indices, va a ocupar mucho espacio (o mucho mas de lo que podría ocupar con otro)
Si creo el indice: id_articulo+id_usuario o al revez, habrá el mismo tiempo de procesamiento para buscarlo, y ocuparán menos que el que dije aca arriba. Pero no estoy seguro