Asuntos de índices (indexes in English)

Alx

Esta mañana estaba haciendo cosillas para una web que tengo y me doy cuenta de que cada vez que intento acceder a algún perfil de los usuarios se queda colgada...

Me pongo a destripar el código, pensando que es una query ultra-complicada y que la BBDD hoy está perra.

Me doy que la query en cuestión tiene 2 subqueries anidadas... menuda mierda de servidor y de mySQL, pienso al principio.

Pero luego digo... quizá en su momento no hice buena previsión y no incluí los índices que tocaban.

Así, que voy, lo hago y voilà! tiempos de respuesta buenos de nuevo.

Mi pregunta es:

¿Cuál es tu método de elección de índices?

  • ¿Basándote en la experiencia? Eso supone tener bastante idea y tener trabajo a tus espaldas.

  • A medida que los vas necesitando, según las queries que haga tu sistema.

  • No creas índices.

Creo que nos faltan aplicaciones a la hora de programar orientado a los Servicios Web, ya que, en general, suele tocar hacerlo todo a mano.

Soltrac

3ero de carrera, asignatura de BB.DD. sección de diseño físico :P

Pero básicamente, hay ciertas reglas q puedes encontrar googleando q se deben cumplir :)

Alx

Yo la dí en 2º.

No me ayudas con esa respuesta.

Busca en google:
http://www.google.es/search?hl=es&q=opinar+sabiendo+de+lo+que+se+habla&btnG=Buscar+con+Google&meta=

Como ves, sé buscar en google.
Mi duda básicamente es: hay que tener una estrategia previa (desconociendo el uso real de tu aplicación) a la hora de crear una BBDD para una Web o suele hacerlo mediante un estudio de los accesos (información que no se encuentra trivialmente).

Pero para la gente todopoderosa como tú, que ya conoce de sobra su sistema es todo trivial.

Un saludo

Soltrac

#3 Te crees muy gracioso, pero te equivocas.

Cuando yo desarrollo un programa y hago una serie de consultas, es bueno indexar las columnas a devolver y no indexar las columnas que estén en esas sentencias de búsqueda en la parte del "where".

En este caso de los perfiles q hablas...sabes de antemano las consultas q se hacen no?

Pues ya está, la base de un diseño es INTENTAR hacerlo de antemano. Evidentemente, es dificil acertar siempre y por eso hay empresas q tienen administradores de bases de datos contratados.

Y a googlear, me refería a ejemplos como: www.tufuncion.com/indices-mysql

Sigue haciendo la gracieta, ultimamente la gente q visita el foro de DEV cada vez es más idiota.

Alx

Y la que responde más.

PD1[Editado]: Releo tu mensaje... los índices en sentido estricto son información adicional para ordenar una tabla, en adición a la clave primaria. Son como ponerte marquitas para saber dónde te has dejado el libro y es totalmente inherente al SGBD... yo no sé lo que tú haces pero vamos... ¿pareces ingeniero no? Suerte con tu carrera profesional.
Quizá debiste usar los libros y las marquitas que te comento.

PD2: ¿La gente contrata administradores de BBDD para crear índices? En fin...

PD3: Muchas veces no sabes cual va a ser el uso exacto de tu aplicación (en especial de una web) así que estaría bien una herramienta que monitorizase los accesos y te sugiriese las cosas... por eso comentaba todo esto. GL

Alx

Releyendo tu mensaje me doy cuenta que no tienes npi de lo que es un índice.

Espera:

http://es.wikipedia.org/wiki/%C3%8Dndice_(base_de_datos)

Nada que ver con quitar las WHERE, etc, pero vamos... nada que ver.

[Editado] Deja de hacer como si sabes please, que yo me canso ya de tanta estupidez.

B

para nada he visto en #2 una respuesta tan "chunga" que explique lo gilipollas q te has puesto (con toda la acritud del mundo) nosporná

aflojemos los humos q aqui se salta a la mínima de cambio

r2d2rigo

PD3: Muchas veces no sabes cual va a ser el uso exacto de tu aplicación (en especial de una web)

LOL. Pues si empiezas haciendo la casa por el tejado, mal vamos... porque vamos, lo que soy yo (y supongo que la mayoria de gente) comienzo planificando o haciendo un esquema minimo de lo que voy a desarrollar, aunque luego meta ampliaciones a saco.

Y esos aires de prepotencia sobran ·_.

Alx

Es que estoy cansado de que se desprecie a la gente en este foro... a la mínima que pregunta algo.

Y vuestro amigo, ha empezado diciendo: mucho idiota se pasa por DEV últimamente.

Paso de que me llame idiota alguien que no sabe ni lo que le pregunto.

Algún día lo hacemos al revés, ok?

Sobre lo de no saber lo que hace tu aplicación. Ok, yo sí que lo sé pero si la aplicación es grande o la navegación no está claramente definida, crear índices gratuitamente no es recomendable.

Un saludo y perdonad por el enfado :)

B

hablando se entiende la gente ves ? xDDD, referente a lo de la web... supongo q todo es planificarse, cuanto más grande sea el proyecto más horas se facturan a planificación, con un boli un papel y al cliente en frente yo q se... mientras paguen se pueden hacer las cosas bien, lo chungo es cuando empiezan a racanear...

Soltrac

#6 Q un índice no se escoge según si las columnas a indexar aparecen en sentencias de búsqueda en la parte del WHERE o no?

Ok, yo tonto, tu listo :). Así normal q luego entres en tus aplicaciones y tarden eternidades en cargar.

Pero yo hablo sin saber, no te preocupes, solo posteo pq me aburro :)

Usuarios habituales