Vectores o matrices ... (perdón por lo extenso)

Ricardo Mun~oz A. rmunoz en pjud.cl
Jue Nov 9 14:43:02 CLST 2006


Rodrigo Fuentealba wrote:

[...]

> Ahora, un error:
>
> Cito:
>
> "a que se refiere con join, tienes tabla 1 con el rut del alumno y en
> la segunda tabla tambien tienes el rut del alumno creo yo, entonces
> tienes que hacer una consulta mas menos asi. select <campos> from
> tabla1,tabla2 where tabla1.rut = tabla2.rut"
>
> Eso no es usar joins, eso es hacer una consulta común y silvestre a
> dos tablas de la base de datos, y normalmente lo haces con alias.

lo de mas arriba si corresponde a un join, especificamente a un inner join.
solo que esa sintaxis no es estandar, ver explicacion aca:

http://en.wikipedia.org/wiki/Join_(SQL)#Inner_join

[...]

> En mi tiempo trabajando con bases de datos, he visto malas formas de
> trabajar, pésimas formas de trabajar y el uso indiscriminado de joins,
> debido a que utilizas mucha memoria y los mismos algoritmos que usas
> sobre datos comunes y corrientes bien indexados... pero sobre
> cantidades de código más grande. Consideren siempre antes de
> planificar una consulta compleja el cómo van a consumir menor cantidad
> de memoria.
>
> ¿Para qué sirve un join? si no tienes un buen método de optimización
> de consultas, solamente para llenar la memoria de datos.

tienes algun ejemplo completo (usando EXPLAIN) para demostrar tu afirmacion?

> Ahora, ¿tablescanning? (recorrer N registros por query, siendo que no
> todos los vas a usar) Se evita con índices, gracias y buenas noches!

(y obviamente el planificador de consultas al procesar un join hace uso 
de esos indices...)

parece que te faltan horas de suen~o!

obs. toma en cuenta que por cada nueva consulta dentro de un ciclo se 
gasta tiempo en:
verificar los privilegios del usuario, procesar la consulta 
(planificador), ejecutar la consulta
y entregar los resultados. con pocos datos y pocos usuarios puede que no 
se note, pero
cuando tienes muchos datos (millones de registros) y muchos usuarios 
concurrentes (cientos
o miles), la diferencia si se nota...

-- 
Ricardo Mun~oz A.
Usuario Linux #182825 (counter.li.org)


Más información sobre la lista de distribución PHP