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.