临时表

MySql中4种批量更新的方法

纵然是瞬间 提交于 2019-11-28 23:06:54
1、replace into 批量更新 replace into test_tbl (id,dr) values (1,'2'),(2,'3'),(x,'y'); 示例: replace into book ( 'Id', 'Author', 'CreatedTime', 'UpdatedTime' ) values (1,'张飞','2016-12-12 12:20','2016-12-12 12:20'), (2,'关羽','2016-12-12 12:20','2016-12-12 12:20'); 2、insert into on duplicate key update批量更新 insert into test_tbl (id,name) values (1,'a'),(2,'b'),(x,'y') on duplicate key update name=values(name); 示例: insert into book (Id,Author,CreatedTime,UpdatedTime) values (1,'张飞2','2017-12-12 12:20','2017-12-12 12:21'), (2,'关羽2','2017-12-12 12:20','2017-12-12 12:21'), (3,'刘备','2017-12-12 12:21','2017-12

mysql临时表创建

你离开我真会死。 提交于 2019-11-28 21:50:34
create table ls_table_tcc as SELECT * FROM SR_MAIN WHERE SYS_SPZT= 1 AND sys_djzt = 0 and (mjzksrq = '' or mjzksrq is null or mjjzbh = '' or mjjzbh is null or mjzjsrq = '' or mjzjsrq is null) and instr('db_jz,kn_jz,wb_jz',mdjlx) > 0; 来源: https://www.cnblogs.com/tongcc/p/11428223.html

Sql中使用With创建多张临时表

感情迁移 提交于 2019-11-28 20:32:28
CREATE PROC [dbo].[sp_VisitCount] ( @count INT ) AS BEGIN DECLARE @current DATETIME SET @current=GETDATE(); WITH TodayVisitTable AS ( SELECT CorpName,COUNT(CorpName) AS TodayVisit FROM dbo.VisitRecords WHERE YEAR(VisitTime)=YEAR(@current) AND MONTH(VisitTime)=MONTH(@current) AND DAY(VisitTime)=DAY(@current) GROUP BY CorpName ), TotalVisitTable AS ( SELECT CorpName,COUNT(CorpName) AS TotalVisit FROM dbo.VisitRecords GROUP BY CorpName ), QUERY AS ( SELECT Row_number() OVER (ORDER BY TodayVisit DESC,TotalVisit DESC) AS RowNum,TotalVisitTable.CorpName,TodayVisit,TotalVisit FROM TotalVisitTable

EF Core 临时表操作

﹥>﹥吖頭↗ 提交于 2019-11-28 20:19:49
网上找了两个, 一个内存表, 一个临时表. 1 安装包: EntityFrameworkCore.MemoryJoin //内存表 直接用select union拼接查询 http://tsherlock.tech/2018/03/20/joining-in-memory-list-to-entity-framework-query/ DbContext类中加入: protected DbSet<QueryModelClass> QueryData { get; set; } // 注意升迁代码中 删除此表的升迁代码 2 引用: https://dev.azure.com/pawelgerr/_git/Thinktecture.EntityFrameworkCore ; 或者: https://github.com/yangzhinong/Thinktecture.EntityFrameworkCore 编译后的dll ConfigureServices方法中加入: services.AddDbContext<SalesDbContext>(options => { options.UseSqlServer(_appConfiguration.GetConnectionString("Default"), opts => { opts.AddTempTableSupport();

MySQL优化

懵懂的女人 提交于 2019-11-28 19:20:55
MySQL优化 增加冗余字段,空间换时间 varchar(10)和varchar(255) 都存储相同的数据,连表查询时,varchar(255)更占内存 字段避免存null,不走索引 索引类型 Btree 索引 - 表的索引会生成一个单独的数据结构,类似于二叉树结构存储,每个节点存储key(索引)和指向数据的地址(真正表中的数据地址) - btree索引常见误区:把where后常用列都加上索引,如果where id =1 and age > 20,其实最终查询只会用到一个索引,mysql的独立索引同时只能用到一个。 - 建议建立多列联合索引,但是要注意,联合索引要满足左前缀原则 注:group by ,order by 也要遵循左前缀原则 - 可以提高排序速度,因为索引树本来就是有顺序,根据顺序从表中以此取出 - 可以提高分组速度,要分组必须先排序 hash 索引 每条数据有对应的hash,查询单一数据效率高,但是查询范围效率低,无法利用前缀索引,每次查询都必须回行,索引树只查询数据位置 索引类型 聚簇索引 innodb 主键索引和行数据一起存放,找到索引就找到数据,不需要回行, 主键索引和数据存放在一起,如果通过主键索引查找,找到索引就等于找到数据,如果通过其他索引,二级索引或者次索引,会找到对主键索引的引用,然后获取数据 默认主键索引 没有主键,用Unique key 做主键

sql(join on 和where的执行顺序)

廉价感情. 提交于 2019-11-28 18:44:10
left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。 right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。 inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。 full join:外连接,返回两个表中的行:left join + right join。 cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。 关键字: on 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用left jion时,on和where条件的区别如下: 1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。 2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。 假设有两张表: 表1:tab2 id size 1 10 2 20 3 30 表2:tab2 size name 10 AAA 20 BBB 20 CCC 两条SQL: 1、select * form tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name=’AAA’ 2

《高性能 MySQL》读书笔记

会有一股神秘感。 提交于 2019-11-28 17:08:12
结构和历史 1. 隔离级别有四种: READ UNCOMMITTED(未提交读),同事务中某个语句的修改,即使没有提交,对其他事务也是可见的。这个也叫脏读。 READ COMMITTED(提交读),另一个事务只能读到该事务已经提交的修改,是大多数据库默认的隔离级别。但是有下列问题,一个事务中两次读取同一个数据,由于这个数据可能被另一个事务提交了两次,所以会出现两次不同的结果,所以这个级别又叫做不可重复读。这里的不一样的数据包括虚读(两次结果不同)和幻读(出现新的或者缺少了某数据)。 REPEATABLE READ(可重复读),这个级别不允许脏读和不可重复读,比如MYSQL中通过MVCC来实现解决幻读问题。 SERIALIABLE(可串行化),这儿实现了读锁,级别最高。 2. 显示和隐式锁定:事务执行中,随时可以执行锁定,锁只有在COMMIT或ROLLBACK的时候才释放,而且所有的锁是同时释放的。这些锁定都是隐式锁定。也可以通过特定语句显式锁定,比如SELECT … LOCK IN SHARE MODE等。 3. MVCC(多版本并发控制):通过保存数据在某个时间点的快照来实现。在INNODB中通过每行记录后保存两个隐藏的列,一个保存行的创建时间,一个保存行的过期(删除)时间,这儿的保存不是时间而是系统版本号,随着事务的数量增加而增加版本号。 SELECT

50种方法优化SQL Server

冷暖自知 提交于 2019-11-28 11:38:14
查询速度慢的原因很多,常见如下几种:      1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)      2、I/O吞吐量小,形成了瓶颈效应。      3、没有创建计算列导致查询不优化。      4、内存不足      5、网络速度慢      6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)      7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)      8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。      9、返回了不必要的行和列      10、查询语句不好,没有优化   可以通过如下方法来优化查询 :      1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要.      2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)      3、升级硬件      4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段      5、提高网速;      6、扩大服务器的内存,Windows 2000和SQL

50种方法优化SQL Server

折月煮酒 提交于 2019-11-28 11:37:57
查询速度慢的原因很多,常见如下几种:      1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)      2、I/O吞吐量小,形成了瓶颈效应。      3、没有创建计算列导致查询不优化。      4、内存不足      5、网络速度慢      6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)      7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)      8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。      9、返回了不必要的行和列      10、查询语句不好,没有优化   可以通过如下方法来优化查询 :      1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要.      2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)      3、升级硬件      4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段      5、提高网速;      6、扩大服务器的内存,Windows 2000和SQL

on条件与where条件的区别

只谈情不闲聊 提交于 2019-11-28 10:26:54
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用left jion时,on和where条件的区别如下: 1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。 2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。 假设有两张表: 表1:tab2 id size 1 10 2 20 3 30 表2:tab2 size name 10 AAA 20 BBB 20 CCC 两条SQL: 1、select * form tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name=’AAA’ 2、select * form tab1 left join tab2 on (tab1.size = tab2.size and tab2.name=’AAA’) 第一条SQL的过程: 1、中间表 on条件: tab1.size = tab2.size tab1.id tab1.size tab2.size tab2.name 1 10 10 AAA 2 20 20 BBB 2 20 20 CCC 3 30 (null) (null) |