- 查看數據庫表大小
SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2), ‘MB’) as data FROM information_schema.TABLES WHERE TABLE_SCHEMA=‘database_name’; #其中database_name爲數據庫名稱
- 清空表
truncate table table_name;
或者
rename table1 table2;
create if no exist table table1 like table2;
drop table table2;
或者
delete from table;
注意:
delete from table_name刪除表的全部數據,對於MyISAM 會立刻釋放磁盤空間 (應該是做了特別處理,也比較合理),InnoDB 不會釋放磁盤空間;刪除部分記錄的話不管是MyISAM或InnoDB都不會釋放空間,如果需要釋放的話需要執行optimize table tablename。
三者的區別可以參考MySQL刪除數據後磁盤空間的釋放總結
- 查看mysql語句執行過程(查詢優化相關)
explain select …
mysql truncate具有外鍵約束的表
清空表的時候報錯(內容類似下面):
Cannot truncate a table referenced in a foreign key constraint (`表名`.`article_content`, CONSTRAINT `fk_aid` FOREIGN KEY (`aid`) REFERENCES `數據庫名`.`article` (`id`))
解決辦法:將foreign key 檢查暫時關閉,truncate後再恢復回來:
SET foreign_key_checks=0;
truncate table table name;
SET foreign_key_checks=1;
select @@foreign_key_checks; #這個命令可以查看外鍵約束檢查狀態