удалить все из таблицы - PullRequest
53 голосов
/ 09 июня 2010

что быстрее?

DELETE * FROM table_name;

или

DELETE * FROM table_name where 1=1;

почему

работает ли truncate table в доступе?

Ответы [ 5 ]

129 голосов
/ 09 июня 2010

TRUNCATE TABLE table_name

26 голосов
/ 09 июня 2010

Это должно быть быстрее:

DELETE * FROM table_name;

потому что СУБД не нужно искать where это что.

Вы должны быть в порядке с truncate хотя:

truncate table table_name
10 голосов
/ 09 июня 2010

Существует отчет об ошибке mySQL от 2004 года, который, по-видимому, все еще имеет определенную силу.Похоже, что в 4.x это было быстрее всего:

DROP table_name
CREATE TABLE table_name

TRUNCATE table_name было тогда DELETE FROM внутренне, не обеспечивая прирост производительности.

Это, похоже, изменилось, нотолько в 5.0.3 и младше.Из сообщения об ошибке:

[11 января 2005 16:10] Marko Mäkelä

Я теперь внедрил быстрый TRUNCATE TABLE, который, надеюсь, будет включен в MySQL 5.0.3.

9 голосов
/ 19 июля 2016

Это удаляет таблицу table_name.

Замените его именем таблицы, которая должна быть удалена.

DELETE FROM table_name;
0 голосов
/ 08 августа 2017

Вы также можете использовать усечение.

truncate table table_name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...