如何加快我的mysql查询?

问题描述:

你好,这里是mysql的查询。如何加快我的mysql查询?

SELECT pbi.iBillItemID, 
    pbi.vItemCode, 
    pbi.vDescription, 
    if(
     pb.iLab = 0, 
     pbi.iQty, 
     ( pbi.iQty 
     - ifnull(
      (SELECT sum(p_bi.iQty) 
       FROM patientbillitem p_bi, patientbillpayment p_b 
       WHERE  p_bi.vRefReceipt = p_b.vReceiptNo 
        AND p_b.iBillNo = p_iBillNo 
        AND p_bi.vItemCode = pbi.vItemCode), 
      0))) 
    iQty 
    FROM patientbillitem pbi, 
    patientbillpayment pb, 
    patient_service ps, 
    patient_service_category psc 
    WHERE pbi.iBillNo = pb.iBillNo 
    AND pb.iBillNo = p_iBillNo 
    AND pbi.vItemCode = ps.iServiceID 
    AND ps.iCategoryID = psc.Asc_ID 
    AND pbi.iPatID = p_iPatID 

以上MySQL查询执行使用该查询实际上p_bi.vItemCode = pbi.vItemCode放缓是varchar字段这就是为什么它正在采取太多的时间来执行我尝试添加全文索引此列那工作得非常快,但问题是全文索引只支持常量字符串。可以任何一个给我这个查询的解决方案谢谢。

+1

这是mysql还是sql-server?两者都非常不同 – GuidoG

+0

您使用的是MySQL还是MS SQL Server?不要标记不涉及的产品。 – jarlh

+0

表格的索引如何? –

1)上vRefReceipt,iBillNo指数,vItemCode

2)使子查询作为一个临时表或CTE(公用表表示),然后从它选择。

刚:

做一个索引我们所有的primary key,直接用于您的查询,然后模拟它需要多长时间低于beforeafter