यदि आप टेबल ट्रंकेट करते हैं, तो आपको इंडेक्स जोड़ने की आवश्यकता नहीं है क्योंकि टेबल ट्रंकेट होने के बाद पुनः बनाई जाती है और इंडेक्स स्वचालित रूप से जुड़ जाते हैं।
उदाहरण
टेबल बनाएं:
mysql> create table DemoTable (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> FirstName varchar(20),
-> LastName varchar(20)
-> );
Query OK, 0 rows affected (0.65 sec)
इंडेक्स बनाएं:
mysql> create index Index_firstName_LastName on DemoTable(FirstName, LastName); Query OK, 0 rows affected (1.04 sec) Records: 0 Duplicates: 0 Warnings: 0
रिकॉर्ड डालें:
mysql> insert into DemoTable(FirstName, LastName) values('John', 'Smith');
Query OK, 1 row affected (0.47 sec)
सभी रिकॉर्ड देखें:
mysql> select * from DemoTable;
आउटपुट
+----+-----------+----------+ | Id | FirstName | LastName | +----+-----------+----------+ | 1 | John | Smith | +----+-----------+----------+ 1 row in set (0.00 sec)
ट्रंकेट करने से पहले टेबल स्टेटस जांचें:
mysql> show create table DemoTable;
आउटपुट
CREATE TABLE `DemoTable` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `FirstName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `LastName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`Id`), KEY `Index_firstName_LastName` (`FirstName`,`LastName`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
टेबल ट्रंकेट करें:
mysql> truncate table DemoTable; Query OK, 0 rows affected (2.01 sec)
फिर से टेबल स्टेटस जांचें - इंडेक्स स्वचालित रूप से बने रहते हैं:
mysql> show create table DemoTable;
आउटपुट
CREATE TABLE `DemoTable` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `FirstName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `LastName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`Id`), KEY `Index_firstName_LastName` (`FirstName`,`LastName`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
निष्कर्ष: TRUNCATE TABLE टेबल संरचना और इंडेक्स को बरकरार रखता है, केवल डेटा हटाता है।