none
請問t-sql查詢語法加雙引號影響效能問題 RRS feed

  • 問題

  • 請問各位前輩,t-sql 語法加上雙引號是否會影響查詢效能。如下列兩個語法,目前碰到的問題是有加雙引號的t-sql語法執行速度較慢,沒有加雙引號的語法執行速度較快,因為兩者時間會差到5、60秒左右,所以想請問大家在sql server中是否有參數可以將軟體廠商送上來的語法將雙引號去除呢?還是說有什麼設定可以改善此問題,麻煩大家指導一下了,謝謝~~~

    ps:下列語法是我拿範例資料庫來測試,這兩個語法效能沒有很大差異,但在我們的user資料庫中同樣語法只是差別在於雙引號,但時間卻會相差快1分鐘。

    ex:--sql1

    SELECT p.Name AS ProductName, NonDiscountSales = (OrderQty * UnitPrice),
    Discounts = ((OrderQty * UnitPrice) * UnitPriceDiscount) FROM Production.Product p
    INNER JOIN Sales.SalesOrderDetail sod ON p.ProductID = sod.ProductID ORDER BY ProductName DESC

    --sql2

    SELECT "p"."Name" AS "ProductName", "NonDiscountSales" = ("OrderQty" * "UnitPrice"),
    "Discounts" = (("OrderQty" * "UnitPrice") * "UnitPriceDiscount") FROM "Production"."Product" p
    INNER JOIN "Sales"."SalesOrderDetail" sod ON "p"."ProductID" = "sod"."ProductID"
     ORDER BY "ProductName" DESC

     

    2016年10月19日 上午 06:39

解答

所有回覆

  • 你如果要把欄位框起來,應該是 []

    SELECT [P].[Name] AS [ProductName] ...


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2016年10月19日 下午 02:49
  • 如果要把雙引號取代掉,其實在SSMS中使用搜尋/取代功能就可以快速完成。

    | SQL PASS Taiwan Page | SQL PASS Taiwan Group

    | My Blog

    2016年10月20日 上午 03:49
    版主
  • 因為是前端軟體ap送至後端sql server查詢的語法,所以我沒辦法更改查詢語法,但目前已確定該語法在ssms查詢速度很快但回到前端接受資料後應該有做處理所以影響到整筆transaction效能,所以目前已將錄到的profiler資料提供給軟體廠商分析,謝謝大家的幫忙。
    2016年10月20日 上午 08:27
  • 因為是前端軟體ap送至後端sql server查詢的語法,所以我沒辦法更改查詢語法,但目前已確定該語法在ssms查詢速度很快但回到前端接受資料後應該有做處理所以影響到整筆transaction效能,所以目前已將錄到的profiler資料提供給軟體廠商分析,謝謝大家的幫忙。

    嗨,

    蠻好奇為何加了雙引號會造成效能上的問題,剛剛稍微試了一下,加上雙引號跟沒加的執行計畫沒什麼差異,懷疑會不會是底層套的FrameWork(NHibernate,EntityFrameWork...)造成的影響。

    2016年10月20日 上午 09:32
  • 對~~我也是測好久,其實一開始是懷疑加雙引號造成的,但測試到後面發現問題應該是出在於我們前端軟體的設定及後端view其中一個欄位的寫法若遇到雙引號會產生不一樣的執行計畫,所以目前已將收集到的profiler資訊提供給廠商做分析,不好意思讓您誤解了,謝謝喲~~~
    2016年10月20日 上午 09:56