编程优化杂谈

编程|优化

1. 在SQL中, 如果选择某字段不为空的记录有两种写法
where columnExample <> ''
或者是
where columnExample is not null

经测试, 后者比前者要快好几倍(columnExample经过索引)

2. 在ASP中, 使用GetRows与不使用GetRows而直接用Record来循环调用, 两者其实有所差别, 下面是测试
调用记录数: 484

使用GetRows, 然后用数组来显示, 发现单花在GetRows的运算上花了约620毫秒. 总共花了711毫秒

直接用RecordSet来循环调用, 总共花了931毫秒

所以建议大家使用GetRows, 特别是要显示很多的返回记录时, 但是它会占用一部分临时内存.

在直接使用RecordSet时, 大部分时间是花费在游标的移动上, 大概占了90%以上

3. 关于SQL中Count的想法

近日我对一大型数据库进行编程, 发现我的一段程序的无论怎么优化数据库, 怎么优化源程序, 执行完毕至少需要
600毫秒以上, 而别一段只需要100多毫秒. 下面是两段代码的条件约束(AgentID已经索引):

1. where AgentID = 0 花了600多毫秒
2. where AgentID > 0 只要100多毫秒

真的是很奇怪, 我开始了寻找花费时间的根源, 一忽儿, 我就找到了原来是Count函数, 它花了将近500毫秒来进行
记录总数统计, 对数据库的AgentID的值进行分析, 又发现AgentID的98%的值都是0, 看来符合的记录越多, Count
进行的时间就会越长.
后来我想想, 不知SQL是否会自动进行反计算, 也就是它先计算不符合的条数, 然后计算符合的而返:
1. where AgentID < 1 因为AgentID最不值是0, 所以用此条件也一样
最后的时间花费仍是600多毫秒, 没有任何必进.

所以只有一个解决方案, 那就是手动进行, 如果记录总数已经知, 则只需要计算不符合条件的记录, 然后 总数减
去不符记录即可得到查找记录的总数目.

下面是几个Count进行的时间测试:

Count(*) 无条件 返回说共有记录145539, 费时刚好100毫秒

count(*) where name is not Null and Agent = 0 返回说记录有145530, 费时431-441毫秒
(name is not null去掉的后只需要执行时间110)

Count(*) where name is not Null 返回记录共有145539, 费时100-110毫秒

以上的测试AgentID都是允许Null值的情况

时间: 2016-02-05

编程优化杂谈的相关文章

编程优化杂谈(一)

编程|优化 1. 在SQL中, 如果选择某字段不为空的记录有两种写法where columnExample <> ''或者是where columnExample is not null 经测试, 后者比前者要快好几倍(columnExample经过索引) 2. 在ASP中, 使用GetRows与不使用GetRows而直接用Record来循环调用, 两者其实有所差别, 下面是测试调用记录数: 484 使用GetRows, 然后用数组来显示, 发现单花在GetRows的运算上花了约620毫秒.

Android内存优化杂谈_Android

Android内存优化是我们性能优化工作中比较重要的一环,这里其实主要包括两方面的工作:1.优化RAM,即降低运行时内存.这里的目的是防止程序发生OOM异常,以及降低程序由于内存过大被LMK机制杀死的概率.另一方面,不合理的内存使用会使GC大大增多,从而导致程序变卡.2.优化ROM,即降低程序占ROM的体积.这里主要是为了降低程序占用的空间,防止由于ROM空间不足导致程序无法安装. 本文的着重点为第一点,总结概述降低应用运行内存的技巧.在这里我们不再细述PSS.USS等概念与Android应用的

【转】【UNITY3D 游戏开发之十】关于IL2CPP(支持IOS-64BIT)的深入讲解以及UNITY优化方面的几篇文章

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/unity3d-game/1627.html  ----------–iL2CPP     Unity 官方博客译文(看完这篇博文非常的兴奋,第一时间想到的是翻译后介绍给大家,文章是以IL2CPP内部开发人员的角度来讲述.由于讨论的内容会比较深入,如果对Mono,IL2CPP等一系列概念不甚了解,可以先参考 Unity3D将来时:IL2CPP

网络小胖子:探索网站优化心得(二)

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 上次探索网站优化心得一文中,将了网站优化到底应该得到什么,我的答案是规范网络市场,今天在进一步谈下,如何通过我们的网站优化技术来将网站规范化,也就讲如何通过我们自身的定位来确定优化网站. 其实,每个站长都有自己特色所在,所以如果您要作战,特别是与网络作战,就要了解自己手中的武器是什么,比如我擅长调查公司方面写作,喜欢这方面,那好你就做个相关的

源代码-JAVA编程作业题求教!

问题描述 JAVA编程作业题求教! 以下是我的JAVA课程作业,希望能够得到源代码的参考 . 一节课的长度为2小时30分钟,课间休息时间为10分钟,现在要求用户输入时间以后,求出下课的时间以及课间休息开始和结束的试看. 以下是用户界面的输出结果. When does this lecture start (please indicate hours and minutes)? Hour: 14 Minute: 55 This lecture will end at Hour: 17 Minute

php多种优化方法

php多种优化方法    PHP 优化配置之一 让论坛速度更快 PHP加速设置 PHP加速:Zend Optimizer优化PHP程序 Zend Optimizer V2.5.7 For Windows 软件语言:英文 运行环境:Win9x/NT/2000/XP Zend Optimizer V2.5.7 For Windows软件介绍: Zend Optimizer用优化代码的方法来提高PHP 4.0应用程序的执行速度.实现的原理是对那些在被最终执行之前由运行编译器(Run-Time Comp

Oracle学习的一些建议

  学习Oracle是一个漫长艰辛的过程.如果没有兴趣,只是被迫学习,那么是很难学好的.学习到一定程度的时候,要想进一步提高,就不得不接触很多Oracle之外的东西,如Unix,如网络.存储等.因此,要真的决心学好Oracle,就一定要有兴趣.有了兴趣,就会一切变得简单快乐起来.简单总结一下,那就是:兴趣.学习.实践. 如何入门是许多初学者最头疼的事情.Oracle涉及的方面太多了:SQL.管理.优化.备份恢复--那么从哪开始学好呢?如果在大学期间学过数据库理论,或有一定的数据库基础自然很好;如

Oracle学习的一些方法建议

  学习Oracle是一个漫长艰辛的过程.如果没有兴趣,只是被迫学习,那么是很难学好的.学习到一定程度的时候,要想进一步提高,就不得不接触很多Oracle之外的东西,如Unix,如网络.存储等.因此,要真的决心学好Oracle,就一定要有兴趣.有了兴趣,就会一切变得简单快乐起来.简单总结一下,那就是:兴趣.学习.实践. 如何入门是许多初学者最头疼的事情.Oracle涉及的方面太多了:SQL.管理.优化.备份恢复--那么从哪开始学好呢?如果在大学期间学过数据库理论,或有一定的数据库基础自然很好;如

学习Oracle的一些建议

学习Oracle是一个漫长艰辛的过程.如果没有兴趣,只是被迫学习,那么是很难学好的.学习到一定程度的时候,要想进一步提高,就不得不接触很多Oracle之外的东西,如Unix,如网络.存储等.因此,要真的决心学好Oracle,就一定要有兴趣.有了兴趣,就会一切变得简单快乐起来.简单总结一下,那就是:兴趣.学习.实践. 如何入门是许多初学者最头疼的事情.Oracle涉及的方面太多了:SQL.管理.优化.备份恢复--那么从哪开始学好呢?如果在大学期间学过数据库理论,或有一定的数据库基础自然很好;如果没