Возможно, я настраиваю себя здесь на обжарку, но при выполнении операции удаления, подобной этой, в процессе самосоединения, не является ли запрос повторным вычислением индекса соединения после каждого удаления?
Хотя это неуклюжая и грубая сила, вы можете подумать:
A.Создайте временную таблицу для хранения идентификатора пользователя, полученного в результате внутреннего соединения, затем присоединитесь к ТО, ТО, затем выполните удаление.
ИЛИ
B.Добавьте столбец логического (битового) типа, используйте объединение, чтобы пометить каждое совпадение (эта операция должна быть БЫСТРАЯ), а затем используйте:
DELETE * FROM matches WHERE YourBitFlagColumn = True
Затем удалите логический столбец.