【问题标题】:How can i Get Better Time Result on This Mysql Query我怎样才能在这个 Mysql 查询上获得更好的时间结果
【发布时间】:2019-07-01 12:48:55
【问题描述】:

我正在使用这个 Mysql 查询并且工作良好,但我需要获得更好的时间结果。我该怎么做?

SELECT TblExistencias.id as ID, TblExistencias.codigo as Codigo, 
       TblPartes.detalle as Detalle,TblPartes.neto1 as PrecioActual, 
       TblExistencias.Condicion_Producto as Condicion,TblCategorias.categoria as Categoria, 
       TblSubcategorias.subcategoria as Subcategoria, TblExistencias.costo as Costo, 
       TblExistencias.serial as Serial, TblExistencias.vendido as Vendido, 
       TblConceptosFacturas.ventaonline as VentaOnline, TblRemitos.nroremitocompleto as Remito, 
       TblFacturas.nrofacturacompleto as Factura, TblFacturas.fecha as FechaVenta,
       TblConceptosFacturas.ventaTotUn as Venta,TblConceptosFacturas.comisionmlunit as Comision,
       TblFacturas.costoenvio as Envio, if(TblExistencias.vendido =1, 
       TblConceptosFacturas.ventaTotUn - TblExistencias.Costo - TblConceptosFacturas.comisionmlunit - TblFacturas.costoenvio,0) as Ganancia, 
       TblProveedores.razonsocial as Proveedor, TblFacturasCompras.nrofacturacompleto as Compra, 
       TblFacturasCompras.fecha as FechaCompra, TblClientes.razonsocial as Cliente 
from TblExistencias 
    left join TblPartes on TblExistencias.codigo = TblPartes.codigo1 
    left join TblRemitos on TblExistencias.id_RemitoVenta = TblRemitos.id
    left join TblFacturasCompras on TblExistencias.id_factura = TblFacturasCompras.id 
    left join TblClientes on TblRemitos.id_cliente = TblClientes.id 
    left join TblFacturas on TblRemitos.id_factura = TblFacturas.id 
    left join TblConceptosFacturas on TblFacturas.id=TblConceptosFacturas.id_factura and TblConceptosFacturas.codigoproducto = TblExistencias.codigo 
    left join TblCategorias on TblCategorias.id = TblPartes.id_categoria 
    left join TblSubcategorias on TblPartes.id_subcategoria = TblSubcategorias.id 
    left join TblProveedores on TblFacturasCompras.id_proveedor = TblProveedores.id 
order by comision desc

【问题讨论】:

  • 在每个关系列(在所有表中)上创建索引,例如 TblFacturasCompras.id_proveedor = TblProveedores.id
  • @Roy 所说的是你能做的最好的事情,你想从所有表中获取所有表数据?有了大量的数据,这将花费一些时间,您可以做的事情不多......
  • 感谢您的回复,所有表格,在 ID 列中都有索引。

标签: mysql join time


【解决方案1】:

解决方案是在每个关系列上创建一个index,例如:

TblFacturasCompras.id_proveedor = TblProveedores.id

【讨论】:

    【解决方案2】:

    问题在于顺序子句,查询从 87 秒到 4 秒。感谢您的帮助。

    【讨论】:

    • 你做了什么 - 删除订单?
    猜你喜欢
    • 2013-08-29
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    相关资源
    最近更新 更多