SQLServer性能优化之查询提示
刚好找到了类似的几条语句,如下
select * from tableA where id not in (select id from tableB)
从执行时间20秒~70秒不等。
开始分析
首先是否用上索引,两个id均是主键所以不存在索引问题
其次分析一下索引,发现这两个id虽然是主键,但却不是聚集索引,而且id是通过newid()生成的完全无序的,因此这两个表在索引上可以说毫无用处,因为完全都是无序的。
换个思路,如果这两个id都是排序的,而且记录数也都不算少,再进行关联是不是会很快呢?还好SQLServer提供了Merge Join的hint提示,试试看吧
select * from tableA where id not in (select id from tableB) OPTION (MERGE JOIN);
执行后出现以下错误:
消息 8622,级别 16,状态 1,第 1 行
由于此查询中定义了提示,查询处理器未能生成查询计划。请重新提交查询,并且不要在查询中指定任何提示,也不要使用 SET FORCEPLAN。
查了以下相关文档,也就是说该语句不支持OPTION (MERGE JOIN);
那么换成not exists再试一下,看看效果是否会好一些
select * from tableA where not exists(select 1 from tableB where tableA.id=tableb.id)
通过测试后,发现稍微速度提高了一点点
最后再添加上OPTION (MERGE JOIN),试试看,居然变成了0秒
select * from tableA where not exists(select 1 from tableB where tableA.id=tableb.id) OPTION (MERGE JOIN);
调优大获成功,呵呵。
总结:
不是所有相关表都一定要建索引(或者聚合索引),以后可以多试试SQLServer的查询提示。
SQLServer性能优化之查询提示相关推荐
- 做好DBA,做好SQLServer性能优化
怎样查出SQLServer的性能瓶颈 --王成辉翻译整理,转贴请注明出自微软BI开拓者[url]www.windbi.com[/url] --原帖地址 如果你曾经做了很长时间的DBA,那么你会了解到S ...
- mysql性能优化-慢查询分析、优化索引和配置
目录 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1) max_con ...
- mongodb聚合查询优化_【MongoDB】MongoDB 性能优化 - BI查询聚合
最全的Java后端知识体系每天更新中.... 在BI服务中通过查询聚合语句分析定位慢查询/聚合分析,小结如下: 慢查询定位: 通过Profile分析慢查询 对于查询优化: 通过添加相应索引提升查询速度 ...
- sqlserver 性能优化思路
通常我们会依照下面的顺序进行分析: 硬件能力 系统规模 数据库内部因素 软件环境 顺序可以有所调整或者交换,但是系统的性能优化一定要从全局出发.切勿一来就深入到某一个SQL语句的优化.可能你花费大量的 ...
- mysql sqlserver 性能优化_SQLServer性能优化之---数据库级日记监控
4.6.6.SQLServer监控 PS:这些脚本都是我以前用SQLServer手写的,参考即可(现在用MySQL,下次也整理一下) 之前写SQLServer监控系列文章因为换环境断篇了,只是简单演示 ...
- 真是环境下阿里云RDS实例mysql性能优化-慢查询分析、优化索引和配置
1.实战线上数据服务器参数: 数据库类型:MySQL 5.6 : CPU:10核: 数据库内存:12000MB: 最大IOPS:100000: 最大连接数:2000: 存储空间:共200.00G,数据 ...
- mysql sqlserver 性能优化_SQLSERVER SQL性能优化技巧
1.选择最有效率的表名顺序(只在基于规则的优化器中有效) SQLSERVER的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving table)将被最 ...
- 关于Net开发中一些SQLServer性能优化的建议
一. ExecuteNonQuery和ExecuteScalar 对数据的更新不需要返回结果集,建议使用ExecuteNonQuery.由于不返回结果集可省掉网络数据传输.它仅仅返回受影响的行数.如果 ...
- oracle子查询不减少数据,Oracle性能优化-子查询到特殊问题
编辑手记:前面我们介绍常用的子查询优化方法,但总有一些情况时在规律之外.谨慎处理方能不掉坑. 前文回顾: 作者简介:韩锋 精通包括Oracle.MySQL.informix等多种关系型数据库,有丰富的 ...
最新文章
- 看看那些不讲码德的坏习惯
- 基于ESP8266 WiFi控制的步进升降机械平台
- 没有传说,也没有神话,我只相信我自己
- CSS3学习笔记1:结构性伪类选择器
- 获取手机idfa_七麦线上公开课:后IDFA时代,链接用户的新生态解决方案
- 高精度模板(含加减乘除四则运算)
- Asp.Net Core 通过中间件防止图片盗链
- des java c_这个des加密,到底是用的哪种类型?
- 天,又有人找我帮忙!
- server sql 数据c盘迁移d盘_C盘空间不足怎么办?如何给C盘扩容?
- mysql查询当前时间和用户_MySQL学习笔记(3) - 查询服务器版本,当前时间,当前用户...
- winform 项目获取app.config 中appSettings节点数据
- 批量给hive的表加分区
- 好好编程-物流项目08【整合静态资源文件】
- python中iter是什么意思_iter的用途是什么?
- python strftime时分秒_python如何把秒换成时分秒
- 什么是DBMS,DB,DBMS?
- STM32CubeMX | STM32 F1系列HAL库低功耗STOP和STANDBY模式唤醒(RTC时钟唤醒+外部中断唤醒示例)
- 马思洛需求理论与市场营销究竟是什么关系
- 白月光与朱砂痣用计算机怎么弹奏,天谕白月光与朱砂痣钢琴谱 乐谱代码怎么使用...
热门文章
- ds18b20温度传感器 lcd C语言,C程序控制18B20测温及LCD显示源码打包
- 如何正确运用计算机,如何正确使用电脑
- vue/cli 3.0 与 2.0脚手架怎样mock数据
- linux提取字符串特定结果
- Object.create()方法
- 老旧计算机升级云桌面,哇哦!PC机房轻松升级云课堂 ,PC利旧方案看我的!
- Java百度网盘创建链接,java获取百度网盘真实下载链接的方法
- autojs怎么post协议_autojs QQ群post签到(五)
- 进制转换(sdut1252)_JAVA
- 二叉树的层序遍历 使用队列和不使用队列