Varios: 1) los inner join son todos a través de PK vs FK ? 2) tenés indexados los campos: tbl_clientes.id_estado_cliente , tbl_comunas.id_region y tbl_familia_productos.id_familia ? 3) o estoy muy anticuado? o el agrupamiento que hacés no está permitido?!?!? ya que tenés mas columnas en la proyección del select que en el group by! Saludos
~~~~~~~~~~~~~~~~ Guillermo Villanueva El 29 de noviembre de 2010 21:48, Aldo Quezada <[email protected]> escribió: > Hola amigos, tengo un pequeño problema con optimizar un query , pasa que > tengo varias tablas y de estas se crean segmentos para marketing > > tengo los clientes ( unos 13mil hasta el momento ) cada cliente tiene 1 o > mas mails , ademas tienen transacciones que pueden ser de servicio tecnico o > ventas los cuales se pueden segmentar por familias de productos, segmentar > por regiones o comunas ( de Chile) > ejemplo de query que me crea > > SELECT tbl_regiones.region, > tbl_regiones.reg_descripcion,tbl_comunas.descripcion, > tbl_clientes.id_cliente, > tbl_clientes.rut_cliente, > tbl_clientes.dv_cliente, > tbl_clientes.nombre_cliente, > tbl_clientes.paterno_cliente, > tbl_clientes.materno_cliente, > tbl_clientes.sexo_cliente, > tbl_clientes.fnac_cliente, > tbl_clientes.direccion_cliente, > tbl_clientes.id_comuna, > tbl_clientes.fono_comercial, > tbl_clientes.celular, > tbl_clientes.fono_particular, > tbl_mails.mail_cliente, > tbl_familia_productos.descripcion_familia, > tbl_familia_productos.producto_familia > FROM tbl_clientes > > Inner Join tbl_mails ON tbl_clientes.id_cliente = tbl_mails.id_cliente > Inner Join tbl_comunas ON tbl_clientes.id_comuna = tbl_comunas.id_comuna > Inner Join tbl_regiones ON tbl_comunas.id_region = tbl_regiones.id_region > Inner Join tbl_transacciones ON tbl_transacciones.id_cliente = > tbl_clientes.id_cliente > Inner Join tbl_familia_productos ON tbl_transacciones.id_familia = > tbl_familia_productos.id_familia > > WHERE > tbl_clientes.id_estado_cliente = 1 > AND tbl_comunas.id_region in(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) > AND tbl_familia_productos.id_familia in (1,3,2) > > group by tbl_clientes.id_cliente > > estos querys se crean dinamicos, ya que se segmenta a traves de una pagina > php donde se seleccionan los datos a segmentar > > se podra optimizar mejor estos querys ya que necesito sacar la cantidad de > prospectos y el query que me arroja unos 5 mil o mas registros se demora > unos 5 minutos (es mucho e indexe las tablas ya que la base no la cree yo y > no habian echo esto), se podran crear vistas para poder bajar el tiempo ? ya > que crea una lista de segmentaciones y sus respectivos prospectos , yo les > dije que lo obviaran por el momento porque es una carga muy grande al > mostrar 10 o 15 segmentos > > > Saludos >
