我有一个服务器应用程序(使用Qt编写的c ++,客户端相同),提供6种不同类型的clinets(通过TCP / IP),这些客户端使用一个数据库(sql server)。 客户端可以要求服务器使用XML执行某些查询。 我无法在一个查询中发送多个语句。
我遇到了问题
我的解决方案是读取整个值集并将其传递给db进行处理然后收到结果。
由于我不是sql server性能的专家,以及他可用的全套工具,我很乐意征求你的意见。"(' v11',' v12',' v13',...,' v17'),. ..,(' vn1',' vn2',' vn3',...,' vn7')"
我不知道哪个最好,因为我不是数据库方面的专家。我大约90%使用c ++而不是sql。
答案 0 :(得分:0)
无论谁有兴趣进行优化,我都想出了下一个解决方案,它让我的执行时间不到1秒(我使用套装approch,我已经在22000多条记录上测试了它,它花了超过1秒的时间) ,使用我们的数据库"特别清单"我们的生产数据库提出了1小时的预期增长。
请考虑我在制作此类approch时所遇到的问题:
dbo.buff
。 (每个插入中不超过1000条记录)。dbo.buff
中的ID保存到临时表中
INSERT INTO @temp as tmp SELECT id
FROM dbo.buff LEFT JOIN <tables, in which you need to evaluate your records>
ON <evaluatin conditions>
WHERE <tables>.id IS NOT NULL <any more conditions>
OR
代码中的任何位置(如果您使用大型集合),重复INSERT
查询但要在{{1之后添加条件(在我的情况下,当我添加OR
时(从不到1秒到11秒),性能大幅下降。OR
每次必须处理这么多记录时,都要将它们插入到缓冲表中,然后调用该过程。
此解决方案更快,然后检查每条记录。
P.S。如果我没有在我的问题中声明所有细节,我很抱歉(我认为它非常抽象,我的目标真的取决于细节)。我不允许分享它们。