在上一篇文章也谈SQL Server 2008 处理隐式数据类型转换在执行计划中的增强 中,我提到了隐式数据类型转换增加对于数据分布很不平均的表,评估的数据行数与实际值有很大出入的问题,进一步测试之后,我发现这种评估不准确性应该确实与猜测的一样,它使用了变量的评估方式...
分类:
数据库 时间:
2015-07-03 17:24:59
阅读次数:
143
在 SQL Server 查询中,不经意思的隐匿数据类型转换可能导致极大的查询性能问题,在 SQL Server 2008 及之后的版本中,这种操作做了增强,但还是经常遇到有问题的时候...
分类:
数据库 时间:
2015-07-02 19:30:08
阅读次数:
180
欢迎回到性能调优培训。今天我想详细谈下统计信息在SQL Server内部是如何呈现的。假设有这样的问题:执行计划里的某个运算符的估计行数是42,但你知道对于这个查询,42不是正确的答案。但是你怎么来解读统计信息来理解这个估计是从哪里来的?我们来谈论下直方图(Histogram)和密度向量(Densi...
分类:
其他好文 时间:
2015-07-02 09:47:15
阅读次数:
114
1、统一SQL语句的写法对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的。
select*from dual select*From dual
其实就是大小写不同,查询分析器就认为是两句不同的SQL语句,必须进行两次解析。生成2个执行计划。所以作为程序员,应该保证相同的查询语句在任何地方都一致,多一个空格都不行!
2、使用“临时表”暂存中间结果
简化SQL语...
分类:
数据库 时间:
2015-06-30 16:31:10
阅读次数:
172
1. SQL注入文件写入(需要用户验证)解决办法:通过建立过滤器方法,对所有用户输入信息进行清理过滤。通过清理过滤用户输入所包含的危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启动任意 SQL 查询、嵌入将在客户端执行的Javascript代码、运行各种操作系统命令等。建议过滤出...
分类:
移动开发 时间:
2015-06-29 16:28:39
阅读次数:
200
1、执行计划就是在sql语句之前加上explain,使用desc 也可以。2、desc有两个选项extended和partitions,desc extended 将原sql语句进行优化,通过show warnings 可以看到优化后的sql语句。 desc partitions 可以查看使用分.....
分类:
数据库 时间:
2015-06-28 16:48:21
阅读次数:
151
上一篇提到动态T-SQL会产生较多的执行计划,这些执行计划会占用多少内存呢?今天从徐海蔚的书中找到了答案。动态视图不仅可以查到执行计划的缓存,数据表的页面缓存也可以查到,将SQL整理一下,做个标记。-- 查询SqlServer总体的内存使用情况select type , s...
分类:
数据库 时间:
2015-06-26 19:38:30
阅读次数:
130
--由于生产环境执行的sql变化较快,版本发布比较频繁,造成sql的执行计划不是很稳定,经常会有一些性能很查的sql出现
--对于这些sql,我们可以使用sql_plan_baseline对执行计划进行绑定,从而使执行计划固定下来
--前提是sql最好使用绑定变量,就算有的没有绑定变量,确定字段的值不会改变才行,因为是针对sql_id进行的绑定,如果sql文本改变,绑定也就无意义了
具体步骤...
分类:
数据库 时间:
2015-06-26 11:03:06
阅读次数:
181
-----正常执行计划
set autotrace traceonly
set linesize 1000
select /*+index(t idx_object_id)*/ * from t where object_id=19;
Execution Plan
----------------------------------------------------------...
分类:
数据库 时间:
2015-06-25 23:06:32
阅读次数:
433
如果执行不带参数的SQL语句,SQL Server会在内部对该语句进行参数化以增加将其与现有执行计划相匹配的可能性。此过程称为简单参数化(在SQL Server 2000中,称为自动参数化),最终起到执行计划重用的效果。--从数据缓冲池中删除所有缓存DBCC DROPCLEANBUFFERS ...
分类:
数据库 时间:
2015-06-25 21:11:21
阅读次数:
240