以下摘自官方文檔: 語法: Or: If you declare an alias for a table, you must use the alias when referring to the table: Correct: ...
以下摘自官方文檔:
語法:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROMtbl_name
[PARTITION (partition_name
,...)] [WHEREwhere_condition
] [ORDER BY ...] [LIMITrow_count
]
性能:
When you do not need to know the number of deleted rows, theTRUNCATE TABLE
statement is a faster way to empty a table than aDELETE
statement with noWHERE
clause. UnlikeDELETE
,TRUNCATE TABLE
cannot be used within a transaction or if you have a lock on the table. SeeSection 14.1.34, “TRUNCATE TABLE Syntax” and Section 14.3.5, “LOCK TABLES and UNLOCK TABLES Syntax”.
簡單理解是:truncate 在不鎖表的情況下,很快:
如果想用delete刪除快點:
The time required to delete individual rows in aMyISAM
table is exactly proportional to the number of indexes. To delete rows more quickly, you can increase the size of the key cache by increasing thekey_buffer_size
system variable
可以配置的key_buffer_size大小
多表刪除:
(1)不帶別名
DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id;
Or:
DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id;
(2)帶別名:必須寫別名:
If you declare an alias for a table, you must use the alias when referring to the table:
DELETE t1 FROM test AS t1, test2 WHERE ...
Correct:
DELETE a1, a2 FROM t1 AS a1 INNER JOIN t2 AS a2 WHERE a1.id=a2.id; DELETE FROM a1, a2 USING t1 AS a1 INNER JOIN t2 AS a2 WHERE a1.id=a2.id;