日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁西西教程數(shù)據(jù)庫教程 → SqlServer怎樣獲取查詢語句的成本

      SqlServer怎樣獲取查詢語句的成本

      相關(guān)軟件相關(guān)文章發(fā)表評論 來源:zzj8704時間:2010/3/16 17:18:46字體大小:A-A+

      作者:佚名點擊:300次評論:1次標(biāo)簽: SqlServer

      • 類型:數(shù)據(jù)庫類大。594KB語言:中文 評分:7.7
      • 標(biāo)簽:
      立即下載

      在有些大系統(tǒng)中,客戶端查詢非常復(fù)雜,需要顯示很多字段和過濾很多條件,例如TFS中的條件過濾,或則用戶希望客戶端查詢能像EXCEL過濾那樣方便

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

       

      TFS查詢條件界面:

       

       

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

       

      下舉一例:

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

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

      set showplan_all on
      select * from sys.all_columns

       

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


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

       

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

      如下為C#簡單實現(xiàn)上述應(yīng)用,在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;
      }
      }

      }

        相關(guān)評論

        閱讀本文后您有什么感想? 已有人給出評價!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        發(fā)表評論 查看所有評論(1)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)