2010-06-08 3 views
34

quoi de plus rapide?effacer tout de la table

DELETE * FROM table_name; 

ou

DELETE * FROM table_name where 1=1; 

pourquoi?

est-ce que truncate table fonctionne en accès?

+3

Pour quelle base de données? Pour quelle table? Pour quelle taille de données? –

+2

Qu'avez-vous découvert lorsque vous avez mesuré le temps pris par les deux? –

+0

mysql et accès –

Répondre

94

TRUNCATE TABLE nom_table

+12

Bingo. La réponse était C) rien de ce qui précède. – ceejayoz

+1

Cela ressemblait à une question de devoirs, alors je pensais que j'irais dans une direction différente ... :) – Jaymz

+0

tronque le travail de table en accès? –

14

Cela devrait être plus rapide:

DELETE * FROM table_name; 

parce SGBDR ne doivent pas regarder where est quoi.

Vous devriez être bien avec truncate si:

truncate table table_name 
+0

tronque le travail de table en accès? –

+1

Non, ce n'est pas pris en charge dans Access. – Jaymz

+0

Jet traite DELETE * FROM Table comme une troncature, au lieu de supprimer les enregistrements un par un. Je ne pense pas que cela réinitialise la valeur de départ Autonumber, cependant. Cela doit être fait en code ou avec un compact (même pas sûr qu'il sera réinitialisé avec un compact dans les itérations récentes de Jet/ACE). –

8

Il y a un mySQL bug report de 2004 qui semble encore avoir une certaine validité. Il semble que dans 4.x, ce fut le plus rapide:

DROP table_name 
CREATE TABLE table_name 

TRUNCATE table_name était DELETE FROM interne à l'époque, fournissant aucun gain de performance.

Cela semble avoir changé, mais seulement dans 5.0.3 et plus jeune. D'après le rapport de bogue:

[11 janvier 2005 16h10] Marko Mäkelä

Je suis maintenant mis en œuvre TRUNCATE TABLE rapide, qui nous l'espérons, être inclus dans MySQL 5.0.3.

+1

Ceci est une belle trouvaille! – Shyam

7

Ceci supprime la table table_name. Remplacez-le par le nom de la table, qui doit être supprimé.

DELETE FROM table_name; 
0

Vous pouvez également utiliser tronqué.

truncate table table_name;