Tsql 如何在sybase中实现性能优化过程
我正在执行一项任务,需要在sybase中优化或调优一个过程。我以前从未做过这种事,有人能帮我一下吗 我认为下面提到的程序部分花费了太多的时间-Tsql 如何在sybase中实现性能优化过程,tsql,sybase,Tsql,Sybase,我正在执行一项任务,需要在sybase中优化或调优一个过程。我以前从未做过这种事,有人能帮我一下吗 我认为下面提到的程序部分花费了太多的时间- DECLARE @lnTotalCount INT ---This returns 953 rows----- SELECT @lnTotalCount = COUNT(*) FROM firstTable chksts SELECT @lnRecordCount = 1, @lnRowsProce
DECLARE @lnTotalCount INT
---This returns 953 rows-----
SELECT @lnTotalCount = COUNT(*) FROM
firstTable chksts
SELECT @lnRecordCount = 1, @lnRowsProcessed =0
WHILE @lnRecordCount <= @lnTotalCount
BEGIN
-- SET ROWCOUNT 1
SELECT @lcCKPY_REF_ID = ckck.CKPY_REF_ID,
@lnCKCK_SEQ_NO = ckck.CKCK_SEQ_NO,
@lcPYPY_ID = ckck.PYPY_ID,
@lnCKCK_CK_NO = ckck.CKCK_CK_NO,
@ldtCKCK_CASHED_DT = ckck.CKCK_CASHED_DT,
@ldtCKCK_PRINTED_DT = ckck.CKCK_PRINTED_DT,
@ldtCKCK_REISS_DT = ckck.CKCK_REISS_DT,
@lcCKCK_TYPE = ckck.CKCK_TYPE,
@lcCKCK_PAYEE_NAME = ckck.CKCK_PAYEE_NAME,
@lcCKCK_CURR_STS = LTRIM(RTRIM(chksts.[TRANSACTION])),
@lnCKST_SEQ_NO = ckck.CKST_SEQ_NO,
@lcCKCK_REISS_USUS_ID = ckck.CKCK_REISS_USUS_ID,
@lnCKCK_LOCK_TOKEN = ckck.CKCK_LOCK_TOKEN,
@ldtATXR_SOURCE_ID = ckck.ATXR_SOURCE_ID,
@lnBPID_CK_NO = chksts.SERIAL_NUMBER
FROM
firstTable chksts,
secondTable ckck,
thirdTable bpid
WHERE ckck.CKPY_REF_ID = bpid.CKPY_REF_ID
AND bpid.BPID_CK_NO = chksts.SERIAL_NUMBER
AND ckck.CKCK_SEQ_NO = bpid.CKCK_SEQ_NO
AND ckck.CKCK_CURR_STS IN ('03','X3')
AND chksts.ID = @lnRecordCount
IF(@@ROWCOUNT<>0) /* 1.5 If-Else condition*/
BEGIN
EXEC @lnRetCd = ABProcedure
NULL,
NULL,
@lcCKPY_REF_ID,
@lnCKCK_SEQ_NO,
@lcPYPY_ID,
@lnCKCK_CK_NO,
@ldtCKCK_CASHED_DT,
@ldtCKCK_PRINTED_DT,
@ldtCKCK_REISS_DT,
@lcCKCK_TYPE,
@lcCKCK_PAYEE_NAME,
@lcCKCK_CURR_STS,
@lnCKST_SEQ_NO,
@lcCKCK_REISS_USUS_ID,
@lnCKCK_LOCK_TOKEN,
@ldtATXR_SOURCE_ID
SELECT @lnRowsProcessed = @lnRowsProcessed + @@ROWCOUNT
SELECT @lnRecordCount = @lnRecordCount + 1
DECLARE@lnTotalCount INT
---这将返回953行-----
从中选择@lnTotalCount=COUNT(*)
第一表chksts
选择@lnRecordCount=1,@lnRowsProcessed=0
当@lnRecordCount时,您是否已经检查了从中选择的3个表的索引是否正确?确保WHERE子句中包含的列具有索引,即您真的只获得了行计数?摆脱迭代循环,连接约束上的表并获得计数(*)。在RDBMS中,基于集合的操作几乎总是比迭代更可取。Volvox,你能给我一些你建议的例子吗,因为我必须一行一行地处理。有没有更好的方法?对不起,我不知道……请看我更新的问题。。。。