SQL性能优化(代码测试)

一、SQL语句结构尽量简单化,不宜有太多的嵌套

嵌套查询举例:
在这里插入图片描述
优化后(在嵌套过多的情况下):
在这里插入图片描述

二、尽量避免使用!=或<>操作符

在where语句中使用!=或<>,数据库引擎将放弃使用索引而进行全表扫描,会减慢查找速度。
举例:
在这里插入图片描述
优化(举例):
在这里插入图片描述

三、使用like模糊查询时除非必要尽量不使用’%xxx%’

举例:

在这里插入图片描述

四、尽量避免使用 or 连接条件

在where语句中使用or,数据库引擎将放弃使用索引而进行全表扫描,会减慢查找速度。
举例:
在这里插入图片描述
优化后(举例):
在这里插入图片描述

五、用具体的字段列表代替 *

不需要返回不需要的字段,减少不必要的查询。
举例:
在这里插入图片描述

先记录以上几点,后续会继续更新。

优化sql的数据。 select * from (select PI.ID AS ProductID,PI.SynapsID,PI.NameCode,PI.Name_cn,PI.Name_en,PP.PicName,PI.BarCode, PI.NewLevel,PI.`Status`,PI.HighPrice,CPM.SalesPlaceID, psi.WIID,psi.stockNum,psi.OccupiedStockNum,psi.AirStockNum, GROUP_CONCAT(CONCAT('\r\n#',tpm.ID,' ',tpm.Title,' $',if(tpm.ReservePrice>0,tpm.ReservePrice,tpm.BuyNowPrice),' ',tmi.`Name`)) Auctions, GROUP_CONCAT(CONCAT('\r\n',tmi.`Name`,' ',tml.OnLineNum)) Listings, GROUP_CONCAT(CONCAT('\r\n',tmi.`Name`,' ',tml.OfferNum)) Offers FROM ProductInfo PI LEFT JOIN (select a.ProductID,GROUP_CONCAT(CONCAT('\r\n',b.ShowName) ORDER BY b.ShowName) as WIID, GROUP_CONCAT(CONCAT('\r\n',a.StrockNum) ORDER BY b.ShowName) as stockNum, GROUP_CONCAT(CONCAT('\r\n',a.OccupiedStockNum) ORDER BY b.ShowName) as OccupiedStockNum, GROUP_CONCAT(CONCAT('\r\n',a.AirStockNum) ORDER BY b.ShowName) as AirStockNum FROM ProductStockInfo a LEFT JOIN WareHouseAreaInfo b ON b.WIID = a.WIID GROUP BY a.ProductID ) psi ON psi.ProductID = PI.ID left JOIN (SELECT ProductID,PicName FROM ProductPic where Sort = 1) as PP ON PI.ID = PP.ProductID left join (select ProductID,SalesPlaceID from Channel_Product_Mapping WHERE SalesPlaceID = 2 GROUP BY ProductID) CPM on PI.ID = CPM.ProductID LEFT JOIN TM_Product_Mapping tpm ON PI.ID = tpm.ProductID and tpm.Status <> 2 LEFT JOIN TM_Account_Info tmi ON tpm.AccountID = tmi.ID LEFT JOIN (select sum(if(`Status` =1,1,0))as OnLineNum,sum(if(`Status` =3,1,0))as OfferNum, TPM from TM_Listing GROUP BY TPM) AS tml ON tpm.ID = tml.TPM where 1 = 1 GROUP BY PI.ID ORDER BY PI.ID DESC) as newtb LIMIT 0,25;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值