日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > Sqlserver > Sql Server怎樣獲取查詢語句的成本

Sql Server怎樣獲取查詢語句的成本

來源:程序員人生   發布時間:2014-01-29 14:44:23 閱讀次數:3138次
在有些大系統中,客戶端查詢非常復雜,需要顯示很多字段和過濾很多條件,例如TFS中的條件過濾,或則用戶希望客戶端查詢能像EXCEL過濾那樣方便

這樣可能導致查詢語句非常復雜,此時的效率也比較低.

TFS查詢條件界面:

 

如果可以獲取查詢語句的成本,當SQL語句執行成本很大(可能執行時間會很長時),系統自動提示用戶是否繼續或則大概需要多長時間,這樣會提高用戶體驗.

下舉一例:

查詢Sql Server中的所有列信息表:sys.all_columns

在Sql server 2k8 management studio 中先后執行下面每行語句即可得到Sql語句的成本, 即為第二個語句執行結果中第一行中TotalSubtreeCost字段值.

set showplan_all on
select * from sys.all_columns

 第二個語句(select * from sys.all_columns)執行結果:

友情提示:表格較寬,請運行代碼后在新窗口中查看。


提示:可修改后代碼再運行!

再執行 set showplan_all off結束查詢計劃分析結果.

此時可以應用showplan_all來獲取Sql查詢的成本.

如下為C#簡單實現上述應用,在VS2k8中編譯通過,只需正確更改Data Source即可運行:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Diagnostics;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
SqlConnectionStringBuilder connectionBuilder = new SqlConnectionStringBuilder();
connectionBuilder.Add("Data Source", "your server name or ip");
connectionBuilder.Add("Initial Catalog", "master");
connectionBuilder.Add("Integrated Security", "True");

string sqlStr = "select * from sys.all_columns";
Console.WriteLine(GetSqlCost(connectionBuilder.ToString(), sqlStr).ToString());
Console.Read();
}

static double GetSqlCost(string connectStr, string strSQL)
{
double sqlCost;
int timeOut;
SqlDataAdapter adapter;
SqlConnection connection = new SqlConnection(connectStr);
SqlCommand command;
DataTable table;
timeOut = 180;
adapter = null;

try
{
connection.Open();
command = new SqlCommand("set showplan_all on ", connection);
command.ExecuteNonQuery();
command.CommandText = strSQL;
adapter = new SqlDataAdapter(strSQL, connection);
adapter.SelectCommand.CommandTimeout = timeOut;
table = new DataTable();
adapter.Fill(table);
command.CommandText = "set showplan_all off";
command.ExecuteNonQuery();
sqlCost = System.Convert.ToDouble(table.Rows[0]["TotalSubtreeCost"]);
}
finally
{
command = null;
connection.Close();
}
return sqlCost;
}
}
}

轉自:http://www.cnblogs.com/zzj8704/

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 九九热精品视频在线观看 | 理论片在线看片三免费 | va天堂| 国产传媒av | 国产美女被遭强高潮免费网站 | 亚洲午夜电影 | 最新免费av网站 | 日本 欧美 在线 | 白色丝袜美女羞羞av | 久久69| 毛片免费看网站 | 国产男女av | 91先生在线 | 丰满放荡岳乱妇699www | 日本99精品 | 欧美日韩亚洲在线 | 精品一区二区国产 | 国产精品久久福利 | 色婷婷综合久久久久中文一区二 | 亚洲成人精品久久 | 久久成人高清 | 国产欧美精品一区二区色综合 | 国产精品视频免费看 | 久久只精品99品免费久23小说 | 国产精品中文字幕在线观看 | 欧美在线观看一区 | 波多野结衣电影久久 | 麻豆传媒免费看 | 亚洲精品不卡 | 狼人综合视频 | 日韩欧美精品一区二区 | 国产精品久久久久久久久免费丝袜 | 色综合天天综合网国产成人网 | 国产三级免费观看 | 九九看片 | 久久综合国产 | 黄色大片国产 | 国产高清精品在线 | 国产在线一区二区三区四区 | 久久加久久| 亚洲欧美日韩天堂 |