为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:加上order by,查询由原来的0.19s变成了4.2s,参照相关性能链接中方案进行配置(更新统计信息、各种组合索引等)没有明显效果,请大佬帮忙分析下原因吧,谢谢!
sql:
SELECT
*
FROM
(
SELECT
*
FROM
(
SELECT
TAXOUTVATINVOICE.ACCEPTPLATFORMACCOUNT, TAXOUTVATINVOICE.ACCEPTPLATFORMCODE, TAXOUTVATINVOICE.ACCEPTPLATFORMNAME, TAXOUTVATINVOICE.ACCOUNTDEPID, TAXOUTVATINVOICE.ACCOUNTORGID, TAXOUTVATINVOICE.ACROSSCITYMARK, TAXOUTVATINVOICE.ACTUALTRANSAMOUNTHASTAX, TAXOUTVATINVOICE.ADMINDEPID, TAXOUTVATINVOICE.ADMINORGID, TAXOUTVATINVOICE.AMOUNT, TAXOUTVATINVOICE.AMOUNTANDTAXINWORD, TAXOUTVATINVOICE.AMOUNTPLUSTAX, TAXOUTVATINVOICE.APPROVALTAXPRICE, TAXOUTVATINVOICE.AUTONOTE, TAXOUTVATINVOICE.BEGINRENTALTIME, TAXOUTVATINVOICE.BILLINGTYPE, TAXOUTVATINVOICE.BUYERACCOUNT, TAXOUTVATINVOICE.BUYERADDRESS, TAXOUTVATINVOICE.BUYERADRESSANDTEL, TAXOUTVATINVOICE.BUYERBANKANDACCOUNT, TAXOUTVATINVOICE.BUYERBANKNAME, TAXOUTVATINVOICE.BUYERTAXPAYERIDNO, TAXOUTVATINVOICE.BUYERTAXPAYERNAME, TAXOUTVATINVOICE.BUYERTEL, TAXOUTVATINVOICE.CANREDAMOUNT, TAXOUTVATINVOICE.CANREDTAXAMOUNT, TAXOUTVATINVOICE.CHECKCODE, TAXOUTVATINVOICE.CNTDELTYPE, TAXOUTVATINVOICE.CODE, TAXOUTVATINVOICE.CONTRACTID, TAXOUTVATINVOICE.DEDUCTION, TAXOUTVATINVOICE.DIGITALSIGNATURE, TAXOUTVATINVOICE.DRAWER, TAXOUTVATINVOICE.DRAWERID, TAXOUTVATINVOICE.EMAIL, TAXOUTVATINVOICE.ENDRENTALTIME, TAXOUTVATINVOICE.ESEAL, TAXOUTVATINVOICE.EXFIVE, TAXOUTVATINVOICE.EXFOUR, TAXOUTVATINVOICE.EXONE, TAXOUTVATINVOICE.EXSIX, TAXOUTVATINVOICE.EXTHREE, TAXOUTVATINVOICE.EXTWO, TAXOUTVATINVOICE.FLUSHREDREASON, TAXOUTVATINVOICE.ID, TAXOUTVATINVOICE.IMAGEID, TAXOUTVATINVOICE.INSTEADSIGN, TAXOUTVATINVOICE.INVALIDSIGN, TAXOUTVATINVOICE.INVOICECODE, TAXOUTVATINVOICE.INVOICEDATE, TAXOUTVATINVOICE.INVOICENUMBER, TAXOUTVATINVOICE.INVOICEPLATFORMCODE, TAXOUTVATINVOICE.INVOICEPLATFORMNAME, TAXOUTVATINVOICE.INVOICESTATE, TAXOUTVATINVOICE.INVOICETYPE, TAXOUTVATINVOICE.ISDEDUCTION, TAXOUTVATINVOICE.ISOUTSYSINVOICE, TAXOUTVATINVOICE.ISREDEV, TAXOUTVATINVOICE.ISSUPPLINVOICE, TAXOUTVATINVOICE.LANDVATITEMCODE, TAXOUTVATINVOICE.LAYOUTFILEURL, TAXOUTVATINVOICE.LISTSIGN, TAXOUTVATINVOICE.MACHINENO, TAXOUTVATINVOICE.NETCONTRACTRECORDCODE, TAXOUTVATINVOICE.NOTE, TAXOUTVATINVOICE.ORIGINALINVOICECODE, TAXOUTVATINVOICE.ORIGINALINVOICENUM, TAXOUTVATINVOICE.PASSWORDAREA, TAXOUTVATINVOICE.PAYEE, TAXOUTVATINVOICE.PRINTSIGN, TAXOUTVATINVOICE.PROJECTID, TAXOUTVATINVOICE.QRCODE, TAXOUTVATINVOICE.RCVINVTEL, TAXOUTVATINVOICE.READMINREGION, TAXOUTVATINVOICE.REDEVITEMCODE, TAXOUTVATINVOICE.REDEVITEMNAME, TAXOUTVATINVOICE.REDUUID, TAXOUTVATINVOICE.REFOILENTCTGY, TAXOUTVATINVOICE.RESTREETNO, TAXOUTVATINVOICE.REUNITCODE, TAXOUTVATINVOICE.REVIEW, TAXOUTVATINVOICE.SALESORGID, TAXOUTVATINVOICE.SELLERACCOUNT, TAXOUTVATINVOICE.SELLERADDRESS, TAXOUTVATINVOICE.SELLERADRESSANDTEL, TAXOUTVATINVOICE.SELLERBANKANDACCOUNT, TAXOUTVATINVOICE.SELLERBANKNAME, TAXOUTVATINVOICE.SELLERTAXPAYERIDNO, TAXOUTVATINVOICE.SELLERTAXPAYERNAME, TAXOUTVATINVOICE.SELLERTEL, TAXOUTVATINVOICE.SOURCETYPE, TAXOUTVATINVOICE.SPECIALINVMARK, TAXOUTVATINVOICE.SPECIALTAXKINDSIGN, TAXOUTVATINVOICE.SRCDOCCODE, TAXOUTVATINVOICE.TAXACTOCCURPLACE, TAXOUTVATINVOICE.TAXAMOUNT, TAXOUTVATINVOICE.TAXORG, TAXOUTVATINVOICE.TAXPAYPERIOD, TAXOUTVATINVOICE.TYPEOFENTERPRISE, TAXOUTVATINVOICE.UPDATEINFO_CREATEDBY, TAXOUTVATINVOICE.UPDATEINFO_CREATEDON, TAXOUTVATINVOICE.UPDATEINFO_LASTCHANGEDBY, TAXOUTVATINVOICE.UPDATEINFO_LASTCHANGEDON, TAXOUTVATINVOICE.VATSPECIALINVOICEINFONUM, TAXOUTVATINVOICE.VERSION, TAXOUTVATINVOICE.VOIDREOPENID, BFINVOICETYPE.NAME_CHS AS INVOICETYPE_NAME, BFINVOICETYPE.CODE AS INVOICETYPE_CODE, BFPROJECTINFO.NAME_CHS AS PROJECTID_NAME, BFPROJECTINFO.code AS PROJECTID_CODE, BFACCOUNTINGORGANIZATION.CODE AS ACCOUNTORGID_CODE, BFACCOUNTINGORGANIZATION.NAME_CHS AS ACCOUNTORGID_NAME, BFCONTRACT.NAME_CHS AS CONTRACTID_NAME, BFADMINORGANIZATION.NAME_CHS AS ADMINORGID_NAME, TAXOUTVATINVOICEGOODS.GOODSORSERVICES, BFINVOICESPECIFICELEMENTS.name_CHS AS SPECIALINVMARK_NAME
FROM
TAXOUTVATINVOICE
LEFT JOIN TAXOUTVATINVOICEGOODS TAXOUTVATINVOICEGOODS ON
TAXOUTVATINVOICE.ID = TAXOUTVATINVOICEGOODS.PARENTID
AND TAXOUTVATINVOICEGOODS.ISMAINGOODS = '1'
LEFT JOIN BFINVOICETYPE BFINVOICETYPE ON
TAXOUTVATINVOICE.INVOICETYPE = BFINVOICETYPE.ID
LEFT JOIN BFPROJECTINFO BFPROJECTINFO ON
TAXOUTVATINVOICE.PROJECTID = BFPROJECTINFO.ID
LEFT JOIN BFACCOUNTINGORGANIZATION BFACCOUNTINGORGANIZATION ON
TAXOUTVATINVOICE.ACCOUNTORGID = BFACCOUNTINGORGANIZATION.ID
LEFT JOIN BFCONTRACT BFCONTRACT ON
TAXOUTVATINVOICE.CONTRACTID = BFCONTRACT.ID
LEFT JOIN BFADMINORGANIZATION BFADMINORGANIZATION ON
TAXOUTVATINVOICE.ADMINORGID = BFADMINORGANIZATION.ID
LEFT JOIN BFINVOICESPECIFICELEMENTS BFINVOICESPECIFICELEMENTS ON
BFINVOICESPECIFICELEMENTS.ID = TAXOUTVATINVOICE.specialinvmark ) B
WHERE
B.BILLINGTYPE = '0' ) A
WHERE
1 = 1 /*otherwhere*/
AND TAXORG IN (
SELECT
ID aodata
FROM
VW_TaxOrgAuthField
WHERE
ID IN(
SELECT
ID aodata
FROM
BFMasterOrganization
WHERE
( (ID = '00990001'
OR pnthrinfo_parentelement = '00990001')
OR(ID = '00990004'
OR pnthrinfo_parentelement = '00990004') ) ))
ORDER BY
A.CODE DESC
LIMIT 0 ,
50
执行计划:
1.不写order by 快是因为没有 排序。写了order by ,虽然是0-50条,但是因为没有任何可以利用的索引,必须要把TAXOUTVATINVOICE 关联后的数据取出来,再排序了。性能不会太好。
2.建议减小范围,比如 建议一:后面所有的left ,可以在 取完分页的50条后写,就是写一个子查询吧。 建议二:目前查询条件只有 TAXORG,建议来个 TAXORG和 CODE DESC的联合索引,这样通过TAXORG过滤条件后,剩下的数据就已经是 CODE DESC的了。应该是可以消去 再排序的。