多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > 數(shù)據(jù)庫(kù) > Sqlserver > Sql Server怎樣獲取查詢語(yǔ)句的成本

Sql Server怎樣獲取查詢語(yǔ)句的成本

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

這樣可能導(dǎo)致查詢語(yǔ)句非常復(fù)雜,此時(shí)的效率也比較低.

TFS查詢條件界面:

 

如果可以獲取查詢語(yǔ)句的成本,當(dāng)SQL語(yǔ)句執(zhí)行成本很大(可能執(zhí)行時(shí)間會(huì)很長(zhǎng)時(shí)),系統(tǒng)自動(dòng)提示用戶是否繼續(xù)或則大概需要多長(zhǎng)時(shí)間,這樣會(huì)提高用戶體驗(yàn).

下舉一例:

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

在Sql server 2k8 management studio 中先后執(zhí)行下面每行語(yǔ)句即可得到Sql語(yǔ)句的成本, 即為第二個(gè)語(yǔ)句執(zhí)行結(jié)果中第一行中TotalSubtreeCost字段值.

set showplan_all on
select * from sys.all_columns

 第二個(gè)語(yǔ)句(select * from sys.all_columns)執(zhí)行結(jié)果:

友情提示:表格較寬,請(qǐng)運(yùn)行代碼后在新窗口中查看。


提示:可修改后代碼再運(yùn)行!

再執(zhí)行 set showplan_all off結(jié)束查詢計(jì)劃分析結(jié)果.

此時(shí)可以應(yīng)用showplan_all來(lái)獲取Sql查詢的成本.

如下為C#簡(jiǎn)單實(shí)現(xiàn)上述應(yīng)用,在VS2k8中編譯通過(guò),只需正確更改Data Source即可運(yùn)行:

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;
}
}
}

轉(zhuǎn)自:http://www.cnblogs.com/zzj8704/

生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 在线免费观看h | 亚洲国产欧美日韩精品一区二区三区 | 日韩专区亚洲综合久久 | 亚洲精品在线观看视频 | www视频在线观看 | 三级爱爱 | 久久精品观看影院2828 | 国产观看精品一区二区三区 | 伊人俺去久久涩五月综合 | 综合激情区视频一区视频二区 | 毛片三级在线观看 | 美国爱爱片视频在线观看 | 免费中文字幕视频 | 欧洲亚洲精品 | 国产成人久久一区二区三区 | 欧美亚洲国产精品久久 | 伊人看片| 国产三级国产精品国产国在线观看 | 国产uv1区二区三区 国产v | 五月婷婷伊人 | 免费国产一区二区在免费观看 | 牛仔裤美女国产精品毛片 | www免费视频 | 日本在线一区 | 精品久久综合一区二区 | 亚洲欧美激情精品一区二区 | 国产日韩久久久精品影院首页 | 老司机午夜在线 | 91美女福利视频 | 欧美久久久久久久久 | 亚洲天堂资源网 | 2022国产精品最新在线 | 中文字幕在线播放第一页 | 一区二区三区四区亚洲 | 亚洲天堂2017 | 欧美视频 亚洲视频 | 国产专区一va亚洲v天堂 | 欧美人与性动交α欧美精品 | 国产精品片 | 国产亚洲图片 | 韩国三级hd中文字幕一男多女 |