← Back to team overview

maria-discuss team mailing list archive

Re: Which JOIN

 

ops, i pressed enter without full message, sorry

from mysql 4.1 (when sub query started) i "ported" my queries to something
like:
SELECT XXXX
FROM table1,table2
WHERE
(joins go here) AND
(filters go here)
GROUP BY fields
ORDER BY fields
LIMIT xxxx
OFFSET xxxx

example..

SELECT
SUM( CantidadPedida ) AS SumPedida,
SUM( CantidadRecibida ) AS SumRecibida,
ArticuloCodigo, ArticuloNombre, ArticuloCosto,
ArticulosDisponibles, ArticuloUnidad

FROM ArticulosPedidos, PedidosIndex,CatArticulos
WHERE
PedidosIndex.NumDePedido = ArticulosPedidos.NumDePedido AND
ArticulosPedidos.ArticuloID = CatArticulos.ArticuloID AND

ArticulosPedidos.Fecha BETWEEN '{$_POST['MovsDelAno']}-{$_**POS
T['MovsDelMes']}-{$_POST['**MovsDelDia']}' AND '{$_POST['MovsAlAno']}-{$_**
POST['MovsAlMes']}-{$_POST['**MovsAlDia']}'

GROPU BY ArticulosPedidos.ArticuloID
ORDER BY SumPedida DESC
LIMIT 500

----
other tip, instead of full table name, *USE* alias
FROM ArticulosPedidos AS a, PedidosIndex AS b, CartArticulos AS c
b.NumDePedido=a.NumDePedido AND
a.ArticuloID=c.ArticuloID

this decrease TCP/IP or UNIX SOCKET packets... if you have a very high qps
(query per second) this can save a lot of ethernet, example
1000 queries of 1KB=1MB/second , if you can save near to 50B per query, you
will use 950*1000 = 950KB, in other words, you can send 5% more bytes over
network without changing hardware
---

References