หากคุณ TRUNCATE ตาราง ไม่จำเป็นต้องเพิ่มดัชนี (indexes) ใหม่ เพราะตารางจะถูกสร้างใหม่หลัง truncate และดัชนีจะถูกเพิ่มกลับมาโดยอัตโนมัติ
สร้างตารางตัวอย่าง
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)
ตรวจสอบสถานะตารางก่อน TRUNCATE
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
TRUNCATE ตาราง
mysql> truncate table DemoTable; Query OK, 0 rows affected (2.01 sec)
ตรวจสอบสถานะตารางหลัง TRUNCATE
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
สรุป: โครงสร้างตาราง รวมถึงดัชนี และ PRIMARY KEY ยังคงอยู่เหมือนเดิม เพียง AUTO_INCREMENT ถูกรีเซ็ตกลับเป็น 1