调优SQL思路
--调优SQL
--sqlreview ->logshipping -> ag辅助副本
--查看正确的执行计划 打开实际的执行计划
set statistics io on
--查看错误的执行计划 打开实际的执行计划
set statistics io on
--对比 正确和错误 执行计划的差别
紧盯最大返回记录数处,找最粗的,不要看cost百分比 没用!
找出问题点,是否走错了索引,或未走做引
--对于缺失索引的 创建索引
use SiccDB
sp_spaceused CDRSub_Current_Merge --116GB
create index idx_CDRSub_Merge_Truncated on CDRSub_Current_Merge(TIME_IN) with(online=on)
--对于走错的索引的 释放错误的执行计划
select sql_handle,* from sys.dm_exec_requests where session_id=77
DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);
GO
--更新索引统计信息
update statistics CDRSub_Current_Merge
update statistics CDRSub_Current_Merge idx_CDRSub_Merge_Truncated
--再次运行sql,查看是否正常
--更新统计信息无效,查看索引碎片率的情况
更新过统计信息后 实际返回行和评估返回行 还是有差距的话,需要查看索引是否碎片严重
SELECT avg_fragmentation_in_percent,* FROM sys.dm_db_index_physical_stats
(DB_ID(N'SiccDB'), OBJECT_ID(N'dbo.CDRSub_Current_Merge'), NULL, NULL , 'LIMITED');
use SiccDB
go
ALTER INDEX [idx_CDRSub_Merge_Truncated] on [dbo].[CDRSub_Current_Merge] rebuild WITH( ONLINE = ON ) --重建索引
ALTER INDEX [idx_anino] on [dbo].[CDRSub_Current_Merge] rebuild WITH( ONLINE = ON )
ALTER INDEX [idx_dnisno] on [dbo].[CDRSub_Current_Merge] rebuild WITH( ONLINE = ON )
--删除走错的索引,不推荐
exec configdb..spm_index_usages 'SiccDB','CDRSub_Current_Merge' --查看走错的索引最后一次使用时间,判断是否为无效索引! 对于无效索引 可以删除!
use SiccDB
go
DROP INDEX [idx_anino] ON [dbo].[CDRSub_Current_Merge]
--最后使用临时表
修改写法,采用临时表,按正常的执行计划顺序,一步步落数
注意:临时表会造成tempdb的page latch争用,并发量大的语句不推荐使用临时表
调优SQL思路的更多相关文章
- 我如何调优SQL Server查询
我是个懒人,我只想干尽可能少的活.当我干活的时候我不想太多.是,你没看错,这看起来很糟糕,作为一个DBA这很不合格.但在今天的文章里,我想给你展示下,当你想对特定查询创建索引设计时,你如何把你的工作和 ...
- SQL注入漏洞和SQL调优SQL注入漏洞和SQL调优
SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这 ...
- 数据库性能调优——sql语句优化(转载及整理) —— 篇2
下面是在网上搜集的一些个人认为比较正确的调优方案,如有错误望指出,定虚心改正 (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中 ...
- 利用sql_tuning_Advisor调优sql
1.赋权给调优用户 grant ADVISOR to xxxxxx; 2.创建调优任务 使用sql_text创建 DECLARE my_task_name VARCHAR2 (30); my_sqlt ...
- MySQL 性能调优——SQL 查询优化
如何设计最优的数据库表结构,如何建立最好的索引,以及如何扩展数据库的查询,这些对于高性能来说都是必不可少的.但是只有这些还不够,要获得良好的数据库性能,我们还要设计合理的数据库查询,如果查询设计的很糟 ...
- 标量子查询调优SQL
fxnjbmhkk4pp4 select /*+ leading (wb,sb,qw) */ 'blocker('||wb.holding_session||':'||sb.username||')- ...
- 数据库性能调优——sql语句优化(转载及整理) —— 篇1
一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实 ...
- 十分钟释疑Oracle中“小表超慢”之谜(SQL调优/SQL优化)
前几天,一个用户找到我,说查一个小表的时候非常慢,我问有多慢,他说最快也得半个小时才能出结果,有时干脆不出结果,我说小表多大,他说就几十兆,有点疑惑,让他帮忙获取了相关信息,一看就明白了,原来所谓的小 ...
- Destoon B2B 调优SQL后 生成首页仍然慢或不成功的原因
修改php.ini文件,查找 ;date.timezone = ,把前面的分号去掉在 “=”后面加上时区. 比如:Asia/Shanghai (上海) 自动task有上面的问题 但后台生成时这样修改后 ...
随机推荐
- cetnos 7 ntp服务的安装与配置
首先需要搭建yum本地仓库 http://www.cnblogs.com/jw35/p/5967677.html #搭建yum仓库方法 yum install ntp -y #安装n ...
- Test Driven Development
链接:https://msdn.microsoft.com/zh-tw/library/dn743856.aspx
- MySQL:索引工作原理
索引查找:通过索引键找到索引的叶子节点,再通过叶子节点的标记快速找到表中对应的行数据,再返回指定的列 索引找查是通过索引键定先位到一块局部区域,再开始扫描匹配的数据的. 为什么需要索引(Why is ...
- 利用React实现表头维度功能
这是我真正意义上地用react实现一些东西.这次分享的是一个很简单的小组件,效果图先放上来: 前端样式用的是一套框架.功能很简单,就是根据选择的维度,在成员里选择对应这个维度的选项. 首先初始化一些数 ...
- NSNotification\KVO\block\delegate的区别和用法
在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信.在IOS应用不断的出现三种模式来实现这种通信: 1.委托delegation: 2.通 ...
- jxl读取Excel表格数据
调用jxl包实现Excel表格数据的读取,代码如下: import java.io.File; import java.io.IOException; import java.util.ArrayLi ...
- MySQL运行状态show status详解
状态名 作用域 详细解释 Aborted_clients Global 由于客户端没有正确关闭连接导致客户端终止而中断的连接数 Aborted_connects Global 试图连接到MySQL服务 ...
- 利用JavaScript生成随机数字!
<!DOCTYPE html> <html> <head> <title>1-99的随机数字</title> <script type ...
- 掌握Thinkphp3.2.0----CURD
TP-----CURD create()创建数据----整理数据 在数据库添加等操作之前,我们首先需要对数据进行创建.何为数据创建,就是接受提交过来的数据,比如表单提交的 POST(默认)数据.接受 ...
- SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束
CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...