1、MySQL统计表数据和索引占用空间大小,数据量总行数
-- 统计数据表占用大小和行数
SELECT
TABLE_SCHEMA as '数据库',
TABLE_NAME as '表名',
(DATA_LENGTH/1024/1024) as '数据大小(Mb)' ,
(INDEX_LENGTH/1024/1024) as '索引大小(Mb)',
((DATA_LENGTH+INDEX_LENGTH)/1024/1024) as '总大小(Mb)',
TABLE_ROWS as '数据行'
FROM
information_schema.TABLES order by ((DATA_LENGTH+INDEX_LENGTH)/1024/1024) desc;
执行结果如下:
[图片上传失败...(image-417672-1654825829708)]
2、执行delete数据后空间仍然被占用解决方案
optimize table table_name engine = innodb;
<font color="red">执行以上语句没有效果,表空间并没有释放;</font>
采取重建表方案解决:
log表是我们要清理的表,数据已经执行delete进行删除,单表空间还在占用
-- 新建log1 表结构跟log 相同
create table log1 like log;
-- 将log的表数据插入到log1
insert into log1 select * from log;
-- 重命名,备份log1表为log_bak
alter tables log rename to log_bak;
-- 重命名,将log1表改为log表
alter tables log1 rename to log;
3、MySQL update更新数据时的 case when then 的用法
update `table` set
sex = (
case
when sname in('立立','饭饭')
then '女'
else '男'
end
)
-------------欢迎各位留言交流,如有不正确的地方,请予以指正。【Q:981233589】