SQL Server性能调优杂记(四)2011-08-19 csdn博客 enhydraboy系统上线完,性能问题往往是Warranty和后期维护的一个重要问题。这些天,客户又来反映, 有一个查询非常慢。这个查询用的是主关键字查询,由于主键是聚集索引,而且又做了碎片处理。应该是 非常快。但是看到的现象就是很慢(10秒左右,最差有18秒之多)。排除了硬件、资源锁定等问题,还不 用到达Database端的Tunning级别。基本判断和SQL文有关,要细看SQL文的执行计划。首先把SQL 文找出来SELECT a.AWB_NO, a.BWB_NO, a.CWB_NO, a.ORIGIN, a.DEST, a.MODIFY_ON, a.CREATED_ON, a.CONSIGNOR_CUSTOMER_CODE, a.CONSIGNOR_CODE, a.CONSIGNOR_NAME, a.CONSIGNEE_NAME, a.CWB_STATUS, a.CWB_TYPE, ISNULL(a.PCS, 0) AS PCS, a.BWBLIST, b.PWEIGHT FROM TB_CWB AS a LEFT JOIN TB_CWBWEIGHT AS b ON a.CWB_NO = b.CWB_NO AND b.AVAILABLE = "Y" WHERE a.AVAILABLE = "Y" AND (a.CWB_NO = @CWB_NO OR (( @CWB_NO IS NULL) AND (a.AWB_NO = @AWB_NO OR @AWB_NO IS NULL) AND (a.BWB_NO = @BWB_NO OR @BWB_NO IS NULL) AND (a.IE_TYPE = @IE_TYPE OR @IE_TYPE IS NULL) AND (a.CREATED_ON >= @DateFrom OR @DateFrom IS NULL) AND (a.CREATED_ON <= @DateTo OR @DateTo IS NULL) AND (a.PAYMENT = @PAYMENT OR @PAYMENT IS NULL) AND (a.ORIGIN = @ORIGIN OR @ORIGIN IS NULL) AND (a.DEST = @DEST OR @DEST IS NULL) AND (a.CONSIGNOR_CUSTOMER_CODE = @CONSIGNOR_CUSTOMER_CODE OR @CONSIGNOR_CUSTOMER_CODE IS NULL) AND (a.CONSIGNOR_NAME LIKE "%" + @CONSIGNOR_NAME + "% " OR @CONSIGNOR_NAME IS NULL) AND (a.CONSIGNEE_NAME LIKE "%" + @CONSIGNEE_NAME + "%" OR @CONSIGNEE_NAME IS NULL) AND (a.CWB_TYPE = @CWB_TYPE OR @CWB_TYPE IS NULL)))