如何加快我的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)上vRefReceipt,iBillNo指数,vItemCode
2)使子查询作为一个临时表或CTE(公用表表示),然后从它选择。
答
刚:
做一个索引我们所有的primary key
,直接用于您的查询,然后模拟它需要多长时间低于before
和after
。
这是mysql还是sql-server?两者都非常不同 – GuidoG
您使用的是MySQL还是MS SQL Server?不要标记不涉及的产品。 – jarlh
表格的索引如何? –