|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时.编程|优化 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值的情形
</p> 对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。 |
|