postgres 8.3 / Ubuntu Karmic / 32-bit (в виртуальной коробке):
duration: 76.534 ms statement: truncate audit.users cascade
duration: 0.952 ms statement: delete from audit.users
postgres 8.4 / Ubuntu lucid / 64-bit (собственный, на машине, на которой размещен виртуальный ящик karmic):
duration: 1469.271 ms statement: truncate audit.users cascade
duration: 0.988 ms statement: delete from audit.users
Таким образом, операторы DELETE в значительной степени эквивалентны, но TRUNCATE занимает в 20 раз больше времени на одной платформе, чем на другой. EXPLAIN, похоже, не работает на TRUNCATE. Как мне узнать, что так долго?
Отредактировано, чтобы добавить:
Приведенные выше примеры были взяты, когда было другое простое соединение, открытое к базе данных, но не было открытых транзакций или другой активности. Я использую TRUNCATE в методе tearDown
некоторых автоматических тестов, где я заметил разницу в скорости между платформами.