07 2008 档案
摘要:自从oracke 7.3以来,oracle提供了一种新的join技术,就是hash join。Hash Join只能用于相等连接,且只能在CBO优化器模式下。相对于nested loop join,hash join更适合处理大型结果集。Hash join不需要在驱动表上存在索引。 一. Hash Join概述 Hash join算法的一个基本思想就是根据小的row sourc...
阅读全文
摘要:最近学习Oracle中,在其有hash表分区功能,就在想sql server 有类似分区吗,查了一些资料,发现没有介绍,在2005中目前只支持列表和范围分区。 以前只知道Sql Server有hash索引,本文就在Sql Server中实现Oracle里的hash表分区。在oracle 10g的ha
阅读全文
摘要:为何IO数这么多,按理论:最大可能IO次数=表页数+索引页数 我们看看数据库里索引"idx_operator"的统计页数: 查看sql代码: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->s...
阅读全文
摘要:昨晚在研究SQL Server 2005 强行扫描索引时,在数据量小时,IO逻辑读比较稳定,一旦数据量达到了一定程度以后,IO逻辑读数据会变化很大 测试环境:建立数据表: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.co...
阅读全文
摘要:上次我们发现在建立了索引时,分页排序还是很慢。 慢的语句: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SELECT TOP (10*(10000-1)) ID FROM [dbo].[[[zping.c...
阅读全文
摘要:上一次我们分析了两种写法不一样,产生的扫描计数差别很大,一个为3,一个为0,我们先看看后面的sql语句执行计划: 执行计划解释: 1,这里有两个合并排序,就是对3个id数据排序,通过合并算法排序(这里为何要用合并排序算法,我们在另一节中讨论) 2,通过排序后的数据,一次使用嵌套循环取出对应的索引值,一共循环三次。(嵌套循环算法将在另一节中讨论) ...
阅读全文
摘要:在上次做分页分析是分析时,执行下面语句: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SELECT TOP 19 * FROM [dbo].[[[zping.com]]]]] WHERE (ID NOT IN (SELECT TO...
阅读全文
摘要:前几次,讨论了sql server 2005的分页和优化,后面谈到目前常用的分页方法在读取后面分页是会越来越慢。后面给了一个高效的分页方法 ,但是想一下,对单个表并且在索引覆盖情况下是很高效的,但实际业务逻辑很复杂,取的数据可能来自多个表,这样的方法是不好的。 那到底是用哪个分页方法啊,这两天看了一下,淘宝网 (http://www.taobao.com/) 和 易趣网 (h...
阅读全文
摘要:前两次讨论了SQL server 2005分页效率和方法。在sql server 2000的分页是采用什么方法啊,对比一下两者的差别和性能 SQL server 2000的分页方法, 其常用分页sql代码如下: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.Co...
阅读全文
摘要:是一篇我们讨论了,SQL Server 2005 分页 的两种情况,在取不同分页时,花的时间很大,如果我们真的取后面几页,如果有几千倍的ioa差异, 假如客户是自己输入页数,那他要等多长时间才能打开,有没有好的办法优化速度。 我们先把先前的sql语句做一个修改: Code highlighting produced by Actipro CodeHighligh...
阅读全文
摘要:SQL Server 2005 分页比 2000的确提高不少,可以使用 row_number()函数来处理。 先看看这个分页函数的效率。新建一个表[[zping.com]] Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.co...
阅读全文
摘要:在web开发中经常碰到排序,可能有人有这样的想法: 1,排序是什么时候排序,是在执行sql语句前完成排序功能,还是最后? 2,排序对sql语句性能有影响吗? 3,在排序中建立索引有好处吗? 这段时间,在优化系统时,也碰到类似的问题,今天我们来讨论一下排序这个问题, ...
阅读全文
摘要:1, 什么是统计信息 以下是官方的对统计信息的描述: 按照默认设置,如果表中的某列没有索引,则SQL Server会自动为该列创建统计。然后,查询优化器评估该列中数据分布范围的统计信息,以选择一个更为有效的查询处理方案。分辨自动创建的统计很简单,在SQL Server 7.0和SQL Server 2000中,自动创建的统计的前缀为_WA_Sys。 个人感想: ...
阅读全文
摘要:最近同事处理一个客户发现一个bug,在排序的时候出现问题: 可能是数据库的bug field002这里有个”2008-03-02“的排序,其他都是按field002来排序,个别不是按field002排序。 执行语句 select * from ( select id,field001 as field001,field002 a...
阅读全文
摘要:目前在做一个项目优化时,想通过数据库层分析sql server系统性能,查了一下网上代码,修改了一下标题和DMVs代码,以下代码可以用来分析系统运行一段时间后,那些语句是系统忙的sql语句。做为参考。 另类使用: 一次在分析一个对账功能时,查看系统代码,看了半天,写得太不规范,又不写注释,看不明白。最后用了下面一个小技巧,和大家一起分享: 就是在测量功能时,先以下命令清除s...
阅读全文
摘要:分析sql执行计划重用次数,查看绑定变量使用情况 select total_elapsed_time / execution_count 平均时间,total_logical_reads/execution_count 逻辑读, usecounts 重用次数,SUBSTRING(d.text, (statement_start_offset/2) + 1, ((CASE...
阅读全文
摘要:dmv分析索引的使用情况,包括扫描次数,更新次数,有利于你评估设计的索引使用效率,sql server 2005的确比2000在性能分析上提高很多。 user_seeks : 通过用户查询执行的搜索次数。 个人理解: 此统计索引seek的次数 user_scans: 通过用户查询执行的扫描次数。 个人理解:此统计表扫描的次数,无索引配合 user_lookups: 通过用户查询执行的...
阅读全文
摘要:用单一存储过程计算报表,替换以前用java+Hibernate的给客户做的计算报表,客户每次用后系统慢等各种问题,该存储过程是当时花了近一周时间,看以前的逻辑,修改的,一开始觉得很简单,但越做越复杂,中途都想放弃,最终坚持下来,完整的替换了以前程序单条SQL计算,保留下来脚本,做纪念! IF EXI
阅读全文
浙公网安备 33010602011771号