mysql有全局临时表吗
临时表、表变量的比较
1、临时表
临时表包括:以#开头的局部临时表,以##开头的全局临时表。
a、存储
不管是局部临时表,还是全局临时表,都会放存放在tempdb数据库中。
b、作用域
局部临时表:对当前连接有效,只在创建它的存储过度、批处理、动态语句中有效,类似于C语言中局部变量的作用域。
全局临时表:在所有连接对它都结束引用时,会被删除,对创建者来说,断开连接就是结束引用;对非创建者,不再引用就是结束引用。
但最好在用完后,就通过drop table 语句删除,及时释放资源。
c、特性
与普通的表一样,能定义约束,能创建索引,最关键的是有数据分布的统计信息,这样有利于优化器做出正确的执行计划,但同时它的开销和普通的表一样,一般适合数据量较大的情况。
有一个非常方便的select ... into 的用法,这也是一个特点。
2、表变量
a、存储
表变量存放在tempdb数据库中。
b、作用域
和普通的变量一样,在定义表变量的存储过程、批处理、动态语句、函数结束时,会自动清除。
c、特性
可以有主键,但不能直接创建索引,也没有任何数据的统计信息。表变量适合数据量相对较小的情况。
必须要注意的是,表变量不受事务的约束,
mysql批量更新10000+的数据,有什么效率比较高的方法
https://m.toutiaocdn.com/i6729690465265779212/
上面是我写的批量更新的方法,适合在程序中批量更新数据!
如果是单次更新大量数据,可结合停用索引,建立中间临时表,或者根据数据特点分段更新数据。
如何提高Mysql批量插入和更新,数据库的效
使用场景: 测试时需要插入100w甚至1000w,1亿以上的数据,跑sql脚本循环插入或者程序遍历插入非常慢。
解决思路:写入文件
文件导入到mysql中
实现举例(以100w为例) 1. 使用sql 生成100w数据到txt文件中。 2. 数据库中将数据导入表中: 耗费时间: 本方案的缺点: 1.权限。 非admin用户没有导入。 2. 写文件代码。对测试人员来说,写文件不仅仅限于任何语言,可以使用任何语言实现之。
