2010-06-08 14 views
34

से सभी को हटाएं तेज़ी से क्या है?तालिका

DELETE * FROM table_name; 

या

DELETE * FROM table_name where 1=1; 

क्यों?

truncate table उपयोग में काम करता है?

+3

किस डेटाबेस के लिए? किस टेबल के लिए? डेटा के किस आकार के लिए? –

+2

जब आपने दोनों द्वारा उठाए गए समय को मापते हैं तो आपको क्या पता चला? –

+0

mysql और पहुंच –

उत्तर

94

TRUNCATE टेबल TABLE_NAME

+12

बिंगो। जवाब सी था) उपरोक्त में से कोई भी नहीं। – ceejayoz

+1

यह एक होमवर्क प्रश्न की तरह लग रहा था, इसलिए मैंने सोचा कि मैं एक अलग दिशा जाऊंगा ... :) – Jaymz

+0

तालिका में काम को छोटा कर देता है? –

14

यह तेजी से किया जाना चाहिए:

DELETE * FROM table_name; 

क्योंकि आरडीबीएमएस देखने के लिए where क्या है नहीं है।

आप truncate हालांकि साथ ठीक किया जाना चाहिए:

truncate table table_name 
+0

तालिका में काम को छोटा कर देता है? –

+1

नहीं, यह एक्सेस में समर्थित नहीं है। – Jaymz

+0

जेट रिकॉर्ड्स को एक छंटनी के रूप में हटाता है, रिकॉर्ड को एक-एक करके हटाने की बजाय। मुझे नहीं लगता कि यह ऑटोनंबर बीज मूल्य को रीसेट करता है, हालांकि। इसे कोड में या कॉम्पैक्ट के साथ किया जाना चाहिए (यह भी सुनिश्चित नहीं है कि यह जेट/एसीई के हालिया पुनरावृत्तियों में कॉम्पैक्ट के साथ रीसेट हो जाएगा)। –

8

2004 अभी भी कुछ वैधता के लिए लगता है कि एक से mySQL bug report है। ऐसा लगता है कि 4.x में, इस सबसे तेजी से किया गया था:

DROP table_name 
CREATE TABLE table_name 

TRUNCATE table_nameDELETE FROM था आंतरिक रूप से वापस तो, कोई प्रदर्शन लाभ प्रदान करते हैं।

ऐसा लगता है कि यह बदल गया है, लेकिन केवल 5.0.3 और छोटे में। बग रिपोर्ट से:

[11 जनवरी 2005 16:10] मार्को Mäkelä

मैं अब तेजी से कम तालिका, जो उम्मीद है कि MySQL के 5.0.3 में शामिल किया जाएगा क्रियान्वित किया है।

+1

यह एक अच्छा खोज है! – Shyam

7

यह तालिका table_name हटा देता है।

इसे तालिका के नाम से बदलें, जिसे हटा दिया जाएगा।

DELETE FROM table_name; 
0

आप ट्रंकेट का भी उपयोग कर सकते हैं।

truncate table table_name;