Always delete by primary key
TL;DR: Deleting records by primary key mitigates the risk of write-lock on the table and full-table scans.
When working on a task to delete multiple records from a populated table based on a value of a column that is not a primary key, it is tempting to write batch flow like this (in pseudo-code):