嘿,我在SQL Server 2000下的存储过程中有一个游标(现在无法更新),它更新了所有表,但通常需要几分钟才能完成.我需要让它更快.这是由任意产品ID过滤的示例表; 示例表http://img231.imageshack.us/img231/9464/75187992.jpg 而GDEPO:Entry depot,CDEPO:Exit depot,Adet:quantity,E_CIKAN使用的数量.
记录解释:
1:20单位进入仓库01,2:10单位叶01. 3:5单位叶01(E_CIKAN为第1记录现在为15)4:10单位进入仓库01. 5:3单位离开01从第1记录.请注意,现在第一条记录的E_CIKAN设置为18. 6:这就是问题所在:3个单元需要离开库01.从第1条记录开始需要2个单元,从第5条记录需要1个单元.我的SP可以处理这个如图所示的罚款,除非它真的很慢.
这是存储过程翻译成英文;
CREATE PROC [dbo].[UpdateProductDetails]
as
UPDATE PRODUCTDETAILS SET E_CIKAN=0;
DECLARE @ID int
DECLARE @SK varchar(50),@DP varchar(50) --SK = STOKKODU = PRODUCTID, DP = DEPOT
DECLARE @DEMAND float --Demand=Quantity, We'll decrease it record by record
DECLARE @SUBID int
DECLARE @SUBQTY float,@SUBCK float,@REMAINS float
DECLARE SH CURSOR FAST_FORWARD FOR
SELECT [ID],PRODUCTID,QTY,EXITDEPOT FROM PRODUCTDETAILS WHERE (EXITDEPOT IS NOT NULL) ORDER BY [DATE] ASC
OPEN SH
FETCH NEXT FROM SH INTO @ID, …Run Code Online (Sandbox Code Playgroud) 我正在尝试为一些朋友创建一个简单的警报应用程序.
基本上我希望能够从如下两个网页中提取数据"价格"和"库存可用性":
我已通过电子邮件和短信部分发出警报但现在我希望能够从网页(那些2或任何其他网页)中获取数量和价格,以便我可以比较可用的价格和数量并提醒我们如果产品介于某个阈值之间,则进行订单.
我已经尝试了一些正则表达式(在一些教程中找到,但我的方式太过于n00b)但是还没有设法让这个工作,任何好的技巧或例子?
我已经使用了两个分析工具(Solaris上的VTune和Solaris上的dbx(在sunstudio中)),它可以在不重建它们的情况下对程序进行分析,在分析过程中,程序只能以与正常相同的速度运行.这两个功能都为我节省了很多时间.
现在我想知道Linux平台上是否有一些免费工具可以做同样的事情.我想我需要基于抽样的分析工具.VTune很好但价格昂贵......我听说过gprof和valgrind.但似乎gprof需要对程序进行检测(因此我们必须重建程序)并且valgrind将会大大减慢程序执行速度.(来自valgrind的介绍,Cachegrind运行程序比正常情况慢20到100倍,而我需要分析的Callgrind基于Cachegrind)
对于分析,我只需要弄清楚函数调用的执行时间,这样我就可以找出性能下降的位置.实际上我不需要很多低级分析信息,因为Cachegrind提供了......
我继承了一个在Unix上有"编译"perl脚本的环境.是否可以反编译,反向工程(无论术语是什么),并从编译的目标代码中获取源代码?
可能不可能,但我想我会问而不是假设.
谢谢,-Kevin.
这是一个简单的编程问题,来自于我对PHP如何在foreach循环中处理数组复制和取消设置缺乏了解.就像这样,我有一个阵列从我想要改变的外部源格式来找我.一个简单的例子是:
$myData = array('Key1' => array('value1', 'value2'));
Run Code Online (Sandbox Code Playgroud)
但我想要的是:
$myData = array([0] => array('MyKey' => array('Key1' => array('value1', 'value2'))));
Run Code Online (Sandbox Code Playgroud)
所以我采取第一个$myData并将其格式化为第二个$myData.我的格式化算法完全没问题.我的问题在于找到一种节省内存的方法,因为这些数组可能会有点笨拙.因此,在我的foreach循环中,我将当前数组值复制到新格式,然后我从原始数组中取消设置我正在使用的值.例如:
$formattedData = array();
foreach ($myData as $key => $val) {
// do some formatting here, copy to $reformattedVal
$formattedData[] = $reformattedVal;
unset($myData[$key]);
}
Run Code Online (Sandbox Code Playgroud)
这是unset()一个好主意吗?即,它是否节省了内存,因为我复制了数据并且不再需要原始值?或者,PHP是否自动垃圾收集数据,因为我没有在任何后续代码中引用它?
代码运行正常,到目前为止,我的数据集的大小可以忽略不计,无法测试性能差异.我只是不知道我是否为自己设置了一些奇怪的错误或以后的CPU命中.
感谢您的任何见解.
-sR
是否有人正在研究或知道NHibernate是否存在SQL 2k8方言?
我的目标是创建一个非常简单的模板语言.目前,我正在使用值替换变量,如下所示:
这个输入:
网络
应该产生这个输出:
Web这是一个测试变量
我有它的工作.但是看着我的代码,我在相同的字符串上运行多个相同的正则表达式 - 这只是冒犯了我的效率感.必须有更好,更Pythonic的方式.(这是真正冒犯的两个"while"循环.)
这确实通过了单元测试,所以如果这是愚蠢的过早优化,请告诉我 - 我愿意放手.在文档中可能有许多这些变量定义和用法,但不是数百个.但我怀疑(对其他人)显而易见的改善方法,我很好奇StackOverflow人群会想出什么.
def stripMatchedQuotes(item):
MatchedSingleQuotes = re.compile(r"'(.*)'", re.LOCALE)
MatchedDoubleQuotes = re.compile(r'"(.*)"', re.LOCALE)
item = MatchedSingleQuotes.sub(r'\1', item, 1)
item = MatchedDoubleQuotes.sub(r'\1', item, 1)
return item
def processVariables(item):
VariableDefinition = re.compile(r'<%(.*?)=(.*?)%>', re.LOCALE)
VariableUse = re.compile(r'<%(.*?)%>', re.LOCALE)
Variables={}
while VariableDefinition.search(item):
VarName, VarDef = VariableDefinition.search(item).groups()
VarName = stripMatchedQuotes(VarName).upper().strip()
VarDef = stripMatchedQuotes(VarDef.strip())
Variables[VarName] = VarDef
item = VariableDefinition.sub('', item, 1)
while VariableUse.search(item):
VarName = stripMatchedQuotes(VariableUse.search(item).group(1).upper()).strip()
item = VariableUse.sub(Variables[VarName], item, 1)
return item
Run Code Online (Sandbox Code Playgroud) 我以非sa用户"bhk"身份登录到SQL Server 2005数据库,该用户只是"公共"服务器角色的成员.以下代码尝试在用户'bhk'调用的存储过程中执行.这行代码......
TRUNCATE TABLE #Table1
DBCC CHECKIDENT('#Table1', RESEED, @SequenceNumber) WITH NO_INFOMSGS
Run Code Online (Sandbox Code Playgroud)
导致此错误...
用户'guest'无权为对象
'#Table1__00000000007F' 运行DBCC CHECKIDENT .
我知道运行DBCC CHECKIDENT所需的权限...
调用者必须拥有该表,或者是sysadmin固定服务器角色,db_owner固定数据库角色或db_ddladmin固定数据库角色的成员.
所以我有两个问题:
任何帮助将不胜感激.
我正在寻找一种在同一台服务器上跨多个域维护PHP会话的方法.我将要将我的网站与简单机器论坛集成,因此我需要使用基于MySQL的会话.谢谢!
sed如果我需要提取由特定模式包围的模式(如果它存在于一行中),我可以使用吗?
假设我有一个包含以下行的文件:
有许多人不敢为邻居所说的[/恐惧/]而自杀.
当我们已经知道
/*答案时,建议就是我们所要求的,*/但希望我们没有.
在这两种情况下,我必须扫描线以获得第一个出现的模式,即在各自的情况下为"[ /或/*",并存储以下模式,直到分别退出模式,即' /]'或' */.
简而言之,我需要fear和answer.如果可能,可以扩展多行;从某种意义上说,如果退出模式出现在不同于同一行的行中.
欢迎以建议或算法的形式提供任何形式的帮助.在此先感谢您的回复
php ×3
perl ×2
regex ×2
algorithm ×1
awk ×1
compilation ×1
curl ×1
cursor ×1
foreach ×1
grep ×1
html-parsing ×1
linux ×1
mysql ×1
nawk ×1
nhibernate ×1
optimization ×1
permissions ×1
profiling ×1
python ×1
sed ×1
session ×1
sql ×1
sql-server ×1
temp-tables ×1
unset ×1
valgrind ×1