Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ถ้า TRUNCATE ตาราง ต้องเพิ่มดัชนีใหม่หรือไม่

หากคุณ 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