gpt4 book ai didi

c# - 在我的案例中如何提高 SQL 查询性能

转载 作者:太空宇宙 更新时间:2023-11-03 17:28:58 26 4
gpt4 key购买 nike

我有一个表,模式非常简单,一个 ID 列作为唯一主键(uniqueidentifier 类型)和一些其他 nvarchar 列。我目前的目标是,对于 5000 个输入,我需要计算表中已经包含哪些输入,哪些不包含。输入是字符串,我有一个 C# 函数可将字符串转换为唯一标识符 (GUID)。我的逻辑是,如果存在现有 ID,那么我会将字符串视为已包含在表中。

我的问题是,如果我需要找出 5000 个输入字符串中哪些已经包含在 DB 中,哪些不是,最有效的方法是什么?

顺便说一句:我目前的实现是,使用 C# 代码将字符串转换为 GUID,然后调用/实现一个存储过程,查询数据库中是否存在 ID 并返回到 C# 代码。

我的工作环境:VSTS 2008 + SQL Server 2008 + C# 3.5。

最佳答案

我的第一直觉是将您的 5000 个输入泵入单列临时表 X,可能对其进行索引,然后使用:

SELECT X.thecol
FROM X
JOIN ExistingTable USING (thecol)

获取存在的那些,并且(如果需要两套)

SELECT X.thecol
FROM X
LEFT JOIN ExistingTable USING (thecol)
WHERE ExistingTable.thecol IS NULL

获取那些不存在的。至少值得进行基准测试。

编辑:根据要求,这里有一些关于 SQL Server 中临时表的好文档和教程。 Bill Graziano有一个简单的介绍,涵盖临时表、表变量和全局临时表。 Randy DyessSQL Master讨论支持和反对他们的性能问题(但请记住,如果您遇到性能问题,您确实希望对替代方案进行基准测试,而不是只是继续进行理论上的考虑!-)。

MSDN 上有关于 tempdb 的文章(保存临时表的地方)和 optimizing它的性能。

关于c# - 在我的案例中如何提高 SQL 查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1010897/

26 4 0
文章推荐: c# - 开关语句
文章推荐: python - 有时会返回一个数据框而不是一个系列
文章推荐: html - 如何在 AngularJS 自定义指令中对 Angular 移动父
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com