gpt4 book ai didi

c# - 我可以优化 fn_listtextendedproperty 上的 SQL 选择吗?

转载 作者:行者123 更新时间:2023-11-30 12:21:31 25 4
gpt4 key购买 nike

我有一个 c# 项目,它在启动时运行很少的查询。我试图找出是否可以优化执行时间。其他查询不到 100 毫秒,但这个查询有点慢。

SELECT * FROM 
fn_listextendedproperty(default, default, default, default, default, default, default)
where name = 'CUSTOM_EX_PROP'

301 毫秒

这正常吗?这个查询可以优化吗?有没有更快的方法来读取数据库扩展属性?

这是我的 C# 代码以防万一

var watch = System.Diagnostics.Stopwatch.StartNew ();
using (SqlDataAdapter sda = new SqlDataAdapter (new SqlCommand (query, _con))) {
sda.Fill (dt);
}
watch.Stop ();
var elapsedMs = watch.ElapsedMilliseconds;
System.Diagnostics.Debug.Print (query + "\r\n" + elapsedMs.ToString () + " ms");

编辑 - 正如@Liam 指出的那样,它闻起来有 XY 问题,让我也告诉您实际情况。数据库的版本存储在它的扩展属性中,当我连接到数据库时,我只想确保版本正确。这就是我在启动时读取其扩展属性的原因。

最佳答案

检查 fn_listtextendedproperty 的代码显示它来自一个 View ..但是有一堆你可能不需要的其他参数

 insert @ids select object_id, name from sys.objects  
where schema_id = @major
and parent_object_id = 0
and 0 <> charindex( '.'+type+'.',
case @level1type
when 'TABLE' then '.U .'
when 'VIEW' then '.V .'
when 'RULE' then '.R .'
when 'DEFAULT' then '.D .'
when 'QUEUE' then '.SQ.'
when 'SYNONYM' then '.SN.'
when 'AGGREGATE' then '.AF.'
when 'FUNCTION' then '.TF.FN.IF.FS.FT.'
when 'PROCEDURE' then '.P .PC.RF.X .'
when 'SEQUENCE' then '.SO.'
end )
end

-- Now get properties from id-s obtained, and return
--
insert @tab select @basetype, i.nam, p.name, p.value
from sys.extended_properties p join @ids i on p.class = @class and p.major_id = i.maj
where p.minor_id = 0 and (@name is null or @name = p.name)

因此请尝试从 View 本身进行选择,看看它是否在您可接受的速度限制范围内

select * from 
sys.extended_properties

关于c# - 我可以优化 fn_listtextendedproperty 上的 SQL 选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45480447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com