宝哥软件园

SqlServer怎样获取查询语句的成本

编辑:宝哥软件园 来源:互联网 时间:2021-08-08

类型:数据库类大小:594KB语言:中文评分:7.7标签:立即下载在有些大系统中,客户端查询非常复杂,需要显示很多字段和过滤很多条件,例如TFS中的条件过滤,或则用户希望客户端查询能像超过过滤那样方便

这样可能导致查询语句非常复杂,此时的效率也比较低。

TFS查询条件界面:

如果可以获取查询语句的成本,当结构化查询语言语句执行成本很大(可能执行时间会很长时),系统自动提示用户是否继续或则大概需要多长时间,这样会提高用户体验。

下举一例:

查询数据库中的所有列信息表:sys.all_columns

在Sql server 2k8管理工作室中先后执行下面每行语句即可得到结构化查询语言语句的成本,即为第二个语句执行结果中第一行中总成本字段值。

从sys.all_columns中设置showplan_all onselect *

第二个语句(从sys.all_columns中选择*)执行结果:

再执行将showplan_all设置为关闭结束查询计划分析结果。

此时可以应用showplan_all来获取结构化查询语言查询的成本。

如下为C#简单实现上述应用,在VS2k8中编译通过,只需正确更改数据源即可运行:

使用系统;使用系统。集合。通用;使用系统Linq .使用系统。文字;使用系统数据。程序使用系统。数据;使用系统。诊断;

命名空间控制台应用程序1 {类Program { static void Main(string[]args){ SqlConnectionStringBuilder connectionBuilder=new SqlConnectionStringBuilder();connectionBuilder .添加('数据源'、'您的服务器名称或IP’);connectionBuilder .添加('初始目录','主目录');connectionBuilder .添加('集成安全性','真');

字符串' sqlStr='从sys.all_columns中选择* ';控制台WriteLine(GetSQLCost(connectionBuilder .ToString(),sqlStr().ToString());控制台read();}

静态双GetSqlCost(字符串connectStr,字符串strSql){ double sqlCost;int timeOutSqlDataAdapter适配器;SqlConnection连接=新的SqlConnection(connectStr);对象命令;数据表表;超时=180;适配器=null

尝试{连接.open();command=new SqlCommand('将showplan_all设置为打开,连接);命令execution query();命令. CommandText=STrsqlAdapter=new sqldatadapter(STrsql,connection);适配器。选择命令。命令超时=超时;table=new DataTable();适配器。填充(表格);命令命令文本='将showplan_all设置为“关闭”;命令execution query();系统。将。转换为双(表。行[0][' totalsubablecost ']);}最后{命令=null连接close();}返回sqlCost}}

}

更多资讯
游戏推荐
更多+