赞
踩
改方法删除数据的时候,并不是都删除了,而是只是一个标实,当数据量很大的时候,用这个删除,你会发现内存并没有发生减少的变化,如果想要真正的清理空间,还得执行OPTIMUIZE TANLE t_image
自增也不会变,再下一次输入数据的时候,还是会从上一次结尾处加;
- //方法1 delete from 删除指定的字段 但是有时候安全验证不允许,where id>=0
- //删除并不是都删掉了,只是做一个标实。事物,是可以回头的,
- //数据量比较大的时候,是很慢的 所以分表
- //自增的时候还是从上一次删除的时候接上的
- //如果想要真正的清理空间,还得再写 OPTIMIZE TABLE t_image 可以定期做
- sql = "delete from `t_image`";
- re = mysql_real_query(&mysql, sql.c_str(), strlen(sql.c_str()));
- sql = "OPTIMIZE TABLE `t_image`";
- re = mysql_real_query(&mysql, sql.c_str(), strlen(sql.c_str()));
- if (re != 0)
- {
- cout << "delete to create,error:" << mysql_error(&mysql) << endl;
- }
- else
- {
- printf("delete successfully\n");
- }
该方法再初始化的时候会用到,是将整个表进行删除,自增索引重新从1开始
空间也清理掉了
- //方法2 truncate 初始化的时候会用 将整个表都清理掉,并且自增索引都重新开始
- //自增会重新开始,也会清理掉空间,但是delete不会
- sql = "truncate `t_image`";
- re = mysql_real_query(&mysql, sql.c_str(), strlen(sql.c_str()));
- if (re != 0)
- {
- cout << "truncate to create,error:" << mysql_error(&mysql) << endl;
- }
- else
- {
- printf("truncate successfully\n");
- }
慎用,会将整个表都删除了,得重新创建表格
- //方法3 将整个表都删掉
- //也会清理掉空间
-
- sql = "drop table t_image";
- re = mysql_real_query(&mysql, sql.c_str(), strlen(sql.c_str()));
- if (re != 0)
- {
- cout << "drop to create,error:" << mysql_error(&mysql) << endl;
- }
- else
- {
- printf("drop successfully\n");
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。