• 27 seconds is quite a long time to delete from a table if the system is live. You could come across errors where inserts and updates are failing as the table is locked. Best delete with a batch amount small enough not to interfere with other statements:

    DECLARE @BatchSize int

    DECLARE @RowsDeleted int

    DECLARE @TotalRowsDeleted int

    SET @TotalRowsDeleted = 0 -- Initialise

    SET @BatchSize = 1000

    SET @RowsDeleted = -1 -- Initialise

    WHILE @RowsDeleted <> 0

    BEGIN

    DELETE TOP(@BatchSize) dbo.CustomerService

    WHERE CustomerID =7

    AND ServiceID =21.

    SET @RowsDeleted = @@ROWCOUNT

    SET @TotalRowsDeleted = @TotalRowsDeleted + @RowsDeleted

    END

    PRINT 'Deleted ' + CONVERT(varchar(20),@TotalRowsDeleted) + ' rows'

    You have already said there is an index on CustomerID and ServiceID so this should be just a quick (or slow) as your method but won't lock up your database in the process.