sql server—以最高效的方式处理一组值 我有一个服务器应用程序(用C++编写,客户机同样),它服务6种不同类型的Cults(TCP/IP),这些客户使用一个数据库(SQL Server)。 客户端可以要求服务器使用XML执行某些查询。 我不能在一个查询中发送多个语句
我被一个问题困住了 目标是:sql server—以最高效的方式处理一组值 我有一个服务器应用程序(用C++编写,客户机同样),它服务6种不同类型的Cults(TCP/IP),这些客户使用一个数据库(SQL Server)。 客户端可以要求服务器使用XML执行某些查询。 我不能在一个查询中发送多个语句,sql,sql-server,Sql,Sql Server,我被一个问题困住了 目标是: 从csv文件加载数据(约8000多条记录);(需要67毫秒) 在数据库(大约4个表)中检查它们是否可以通过一些评估 如果通过评估,则将其插入某个表中 将处理结果发送给客户端 我的解决方案是读取整组值并将其传递给db进行处理,然后接收结果 因为我不是sql server性能方面的专家,也不是他所有可用工具的专家,所以我想征求您的意见 如何在sql server中更有效地执行此操作? 将解析后的值作为字符串传递给sql server过程 ('v11'、'v12'、'
- 从csv文件加载数据(约8000多条记录);(需要67毫秒)
- 在数据库(大约4个表)中检查它们是否可以通过一些评估李>
- 如果通过评估,则将其插入某个表中李>
- 将处理结果发送给客户端
- 如何(有效地)遍历它
- 是否可以将它们作为不同的类型传递(这可以加快过程)
我正在寻找最佳解决方案。无论谁对优化感兴趣,我都提出了下一个解决方案,它给我的执行时间不到1秒(我使用了sets方法,我在22000多条记录上进行了测试,只花了略多于1秒的时间),而使用我们的数据库“Specialist”的方法只需9分钟在我们的生产数据库中得到并有长达1小时的指数增长
- 我必须处理8000多条记录
- 评估4个表中的每条记录
- 如果记录通过评估,则将其插入目标表
dbo.buff
。(每次插入不超过1000条记录)- 创建临时表以保存通过评估的记录的id
- 将
中的id保存到临时表中dbo.buff
作为tmp选择id插入@temp 从dbo.buff左连接 在…上 其中.id不为NULL
- 避免在代码中的任何地方使用运算符
(如果您使用的是大型集合),最好重复或
查询,但要在插入
之后添加条件(在我的情况下,添加或
(从不到1秒到11秒),性能会大幅下降或
- 最后,它做到了:
插入目标_表(字段) 从@tmp中选择(字段)作为tmp 内部连接dbo.buff作为tmp.id=bf.id上的bf
- 您可以返回一个整数值,以指示所有记录是否通过评估(对于进一步的处理,它取决于您)