我需要查询一个InnoDB表(100行),但这是不可能的,因为它会锁定表并停止我的应用程序(必须继续运行查询执行)
QUERY:
EXPLAIN SELECT SQL_NO_CACHE ptown_billing.historial_cobros.FECHA,
"Cobro ok." as ESTADO,
ptown_common.carriers.CARRIER as CARRIER,
ptown_common.precios.DESCRIPCION as DESCRIPCION,
SUM(ptown_common.precios.PRECIO_SIN_IVA) AS PRECIO_CLIENTE,
SUM(ptown_common.precios.COMISION) AS COMISION,
count(*) as CANTIDAD,
ptown_common.productos.producto as PRODUCTO,
ptown_common.origen.origen AS ORIGEN,
ptown_common.keywords.KEYWORD,
ptown_common.shortcode.SHORTCODE,
ptown_common.partners.PARTNER,
ptown_common.empresas.EMPRESA
FROM ptown_billing.historial_cobros
INNER JOIN ptown_billing.cdr ON cdr.ID_CDR = historial_cobros.ID_CDR AND
cdr.DB_MODULO='ptown_suscripcion'
INNER JOIN ptown_suscripcion.transacciones ON
ptown_suscripcion.transacciones.id_transaccion = ptown_billing.cdr.ID_TRANSACCION
INNER JOIN ptown_common.solicitudes ON
ptown_common.solicitudes.ID_SOLICITUD = ptown_suscripcion.transacciones.ID_SOLICITUD
INNER JOIN ptown_common.keywords_partners ON
ptown_common.keywords_partners.ID = ptown_common.solicitudes.ID_KWPT
INNER JOIN ptown_common.partners ON
ptown_common.partners.ID_PARTNER = ptown_common.keywords_partners.ID_PARTNER
INNER JOIN ptown_common.empresas ON
ptown_common.empresas.ID_EMPRESA = ptown_common.keywords_partners.ID_EMPRESA
INNER JOIN ptown_common.keywords ON
ptown_common.keywords.ID_KEYWORD = ptown_common.solicitudes.ID_KEYWORD
INNER JOIN ptown_common.carriers ON ptown_common.carriers.ID_CARRIER = ptown_billing.cdr.ID_CARRIER
INNER JOIN ptown_common.productos_config ON
ptown_common.productos_config.id_configuracion = ptown_suscripcion.transacciones.id_configuracion
INNER JOIN ptown_common.shortcode ON
ptown_common.shortcode.ID_SHORTCODE = ptown_common.productos_config.ID_SHORTCODE
INNER JOIN ptown_common.origen ON ptown_common.productos_config.id_origen = ptown_common.origen.id_origen
INNER JOIN ptown_common.productos ON ptown_common.productos.id_producto = ptown_common.productos_config.id_producto
INNER JOIN ptown_common.precios ON ptown_billing.cdr.ID_PRECIO = ptown_common.precios.ID_PRECIO
WHERE ptown_billing.historial_cobros.fecha = '2013-11-26' AND
ptown_billing.historial_cobros.respuesta = 000
GROUP by FECHA,DESCRIPCION,CARRIER,PRODUCTO,ORIGEN,KEYWORD,SHORTCODE,PARTNER,EMPRESA
有什么建议吗?我尝试设置tmp_table_size = 51200但没有结果。
答案 0 :(得分:0)
你们正在加入14个桌子!
根据我的经验,在这样的99%的案例中,事实证明添加索引可以解决问题。
查看所有ON table1.field1 = table2.field2
,并确保 table1 在 field1 上包含索引, table2 的索引位于 field2 。