我有一个表Order
,我想通过clientId
删除数据。该表格每个客户端有超过2071458条记录。而这个表有16个表的外键引用。当我尝试删除记录时,需要2-4小时才能删除记录。那么,如何提高性能来加快速度呢?如果是的话,我可以使用子查询吗?我可以在这个查询中使用。以下是我正在使用的查询。如何提高查询性能,以更快速地删除子表记录
DECLARE @ORDERID int
DECLARE DEL_RelDataOFOrdeTab CURSOR FOR
SELECT ORDERID FROM orde_ WHERE CLIENTID = @ClientID
OPEN DEL_RelDataOFOrdeTab
FETCH NEXT FROM DEL_RelDataOFOrdeTab INTO @ORDERID
WHILE @@FETCH_STATUS = 0
BEGIN
DELETE FROM AUTHORIZED WHERE ORDERID = @ORDERID
DELETE FROM AUTODISPALERTS WHERE ORDERID = @ORDERID
DELETE FROM DRIVER_REIMBURSEMENT WHERE ORDERID = @ORDERID
DELETE FROM FAXPOD WHERE ORDERID = @ORDERID
DELETE FROM GENERICFIELDS WHERE ORDERID = @ORDERID
DELETE FROM [Messages] WHERE ORDERID = @ORDERID
DELETE FROM ORDAUDIT WHERE ORDERID = @ORDERID
DELETE FROM OrderNotification WHERE ORDERID = @ORDERID
DELETE FROM OrderNotificationActions WHERE ORDERID = @ORDERID
DELETE FROM ORDERSPAID WHERE ORDERID = @ORDERID
DELETE FROM ROUTESERVERORDERS WHERE ORDERID = @ORDERID
DELETE FROM UnfinalizedOrders WHERE ORDERID = @ORDERID
print 'DELETING FROM ORDE_'
DELETE FROM orde_ where ORDERID = @ORDERID
PRINT @ORDERID
FETCH NEXT FROM DEL_RelDataOFOrdeTab INTO @ORDERID
END
CLOSE DEL_RelDataOFOrdeTab
DEALLOCATE DEL_RelDataOFOrdeTab
DELETE FROM orde_ WHERE CLIENTID = @ClientID
永不使用光标
WHERE
条款。 –@PareshJ所以我需要在这 –