Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以在fn\u listendedproperty上优化SQL选择吗?_C#_Sql_Sql Server - Fatal编程技术网

C# 我可以在fn\u listendedproperty上优化SQL选择吗?

C# 我可以在fn\u listendedproperty上优化SQL选择吗?,c#,sql,sql-server,C#,Sql,Sql Server,我有一个c项目,在启动时很少运行查询。我试图找出是否可以优化执行时间。其他查询耗时不到100毫秒,但此查询速度稍慢 SELECT * FROM fn_listextendedproperty(default, default, default, default, default, default, default) where name = 'CUSTOM_EX_PROP' 301毫秒 这正常吗?这个查询可以优化吗?有没有更快的方法读取数据库扩展属性 这是我的c代码以防万一 var

我有一个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问题,让我告诉你实际情况。数据库的版本存储在其扩展属性中,当我连接到数据库时,我只想确保版本正确。这就是我在启动时读取其扩展属性的原因。

您无法优化系统功能

如果您不喜欢它,请编写您自己的函数并使用它来代替此函数

此函数的文本可以通过执行

exec sp_helptext 'fn_listextendedproperty'

检查fn_listendedproperty的代码表明它是从一个视图中获取的..但是有一堆其他参数,您可能不需要这些参数

 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)  

这整件事闻起来像是你想在这里实现什么?你能以xml的形式共享执行计划吗,我不能在我的系统上重新处理这个问题,我不到一秒钟就完成了,它必须是特定于您的系统的,或者查询可能正在等待某些资源。因此,请查看这是否适用于您的案例。从sys.extended\u properties中选择*这真的是个问题吗?我的意思是301ms仍然很快,眨眼可能需要400ms,用户不会注意到额外的200ms作为一次性动作。如果有多个这样的查询减慢了加载过程,那么建议并行执行这些查询和/或延迟加载一些数据,直到表单/页面加载完毕(假设不需要)immediately@TheGameiswar .. 从sys.extended_properties中选择*这就像一个符咒。。。现在需要5毫秒。。。你可以把它贴成答案。。。。
select * from 
sys.extended_properties