[小菜一碟] 無意中發現 SSMS(SQL Server Management Studio)有一個「檢視相依性」的功能

如果我們接手維護一個資料庫,裡面的 Table、View、Stored Procedure、Function、Trigger 相依鏈錯綜複雜,想要定位發生問題的區塊,搞得像盜墓一樣,這天我無意間發現 SSMS(SQL Server Management Studio)有一個「檢視相依性」的功能,有助我們來釐清資料庫物件的相依鏈。

...繼續閱讀 »

[小菜一碟] SQL Server 內建的一個抽號碼牌的功能 - SEQUENCE

在過往的需求中,難免會有那種需要按照順序產生或處理資料的時候,我個人常用的解法是替資料照著順序給一個可排序的標記,這就需要一個按照順序產生識別碼的機制,如果在同一個應用程式內還好處理,要是跨應用程式、跨機器的話,產生識別碼的演算法就要好好想想,現成的話 SQL Server 就有一個 SEQUENCE 功能可以用。

...繼續閱讀 »

[料理佳餚] SQL Server 的叢集索引(Clustered Index)欄位不一定都要是主鍵(Primary Key)

我個人認為 SQL Server 預設拿主鍵(Primary Key)來當叢集索引(Clustered Index)欄位這件事情,應該要被重新考慮,以目的來講,主鍵與叢集索引的關係其實並不大,主鍵的目的是確保資料是唯一且正確的,而叢集索引的目的是提升查詢效率,所以在這點上,我覺得在資料表一個開始設計的時候,預設是分開考量的會比較恰當。

...繼續閱讀 »

[料理佳餚] Dapper 用起來很友善,但是預設的參數型別對執行計劃不太友善。

  • 8577
  • 0
  • C#
  • 2022-12-22

用過 Dapper 的朋友應該對它是愛不釋手,最近在一個對效能敏感的系統上 tune SQL 查詢語句時,發現到 SQL 參數型別的不同及使不使用 SQL 參數,對執行計劃的選擇影響甚大,相同的查詢條件及結果,只因改了參數的型別,執行計劃就跟著改變,查詢成本也跟著拉高。

...繼續閱讀 »

[小菜一碟] SQL Server 利用 LAG 及 LEAD 函數取得上一筆及下一筆資料列,來與當前資料列進行運算。

上一篇文章提到依日期彙總結果,這時候老闆又開需求了「Johnny 啊,能不能幫我多加一個欄位,讓我看到每個分店當月銷售額與上個月銷售額相比的成長百分比?」,這個需求也很常出現在我的程式設計生涯當中,我們來看看在 SQL Server 中怎麼來實現。

...繼續閱讀 »