Category: sql

【前言】關於 SQL 執行計劃如何影響查詢效能議題很久之前研究過了(SQL筆記:Index Scan vs Index Seek、SQL筆記:Literal, Variable與Parameter),昨天研究 網站執行 Stored Procedure 爆慢,在 SSMS 秒回問題找到 SQL Se...

今天學習到新知識 - 資料表欄位進行排序時,遇到 NULL 會怎麼辦?茲針對我平時較會遇到的資料庫:ORACLE、MSSQL 及 SQLite 做個整理。 我弄了一個模擬資料表,用 CorpName, StartDate, EndDate 記錄工作履歷: 查詢條件為「仍在職者(離職日為 NULL)...

要查看 SQL 指令的執行計劃,SSMS 絕對是首選,透過圖形化呈現,效能瓶頸一秒現形。(參考:應用範例) 不過,不是每一台機器都有裝或能裝 SSMS,在沒有安裝工具軟體的環境,要如何用 PowerShell/C# 取得 SQL 查詢的執行計劃呢? SQL 提供幾個控制選項 SET SHOWPLAN...

我們都知道,為 WHERE 條件用到的欄位建立索引可改善查詢效能,假設有 SQL 查詢如下,如果要為它建立索引,請問索引 Key 應包含哪些欄位? SELECT LastName,FirstName,Address,City,State,Zip,Phone FROM Employee WHERE (...

SQL LocalDB 是開發測試 SQL 程式的好夥伴,免費,比 SQL Server 輕巧,行為模式比照標準 SQL Server,很適合裝在開發主機扮演 SQL 資料庫角色。(延伸閱讀:SQL Server 2012 Express LocalDB (SqlLocalDB) 深入剖析 by 保...

調查了一起開發測試過程引發 Windows 稽核失敗事件的案例。 本機不小心在 Visual Studio 啟動了某個測試網站專案,在另一個伺服器留下多筆操作登入使用者登入失敗的 Windows 安全事件: 依據微軟文件,4625 事件用於記錄任何登入失敗,留存在嘗試登入的電腦上。這個事件也是之前...

SQL Server 從很早的版本便支援加密傳輸(早期還支援 SSL,SQL Server 2016 起只支援 TLS),在安全要求較嚴謹的環境可啟用加密連線,保護傳輸內容不被竊聽或攔截(概念上是 HTTP 與 HTTPS 的差異)。(延伸閱讀:啟用資料庫引擎的加密連線 - MS Docs) SSM...

SSMS 有個方便功能,在 Table、View、Function、Stored Procedure 等物件用右鍵選單可以產生建立該物件的 SQL Script。 產生的資料表 Script 連 Description 註解都有,拿到新資料庫執行可建立一模一樣的資料表,十分方便: USE DB_N...

關於資料庫是否該用 Guid 當 Primay Key,正反雙方各有擁護著,使用 Guid 的好處是不需依賴資料庫即可取得唯一識別碼,有助提高系統設計彈性,同時 Guid 無法被猜測具安全防護效果;缺點則是不利人工查詢、消耗儲存空間及當作叢集索引(Clustered Index) 時易導致索引破碎(...

研究 SQL NEWSEQUENTIALID() 時引發一個疑問,Guid 在 .NET、SQL 的排序方式是否相同?是依據什麼規則決定大小? 答案是 .NET 與 SQL Server 排序規則不同。 例如隨機產生三個 Guid,在 .NET 的排序為 87e4077c-a7b7-48d5-b1...

從 Log 或參數拿到成串未分行的 SQL 指令,或是查程式碼遇到複雜的 SQL 指令,會讓它規則化一點方便閱讀,除了手工整理,自動排版工具也是種選擇。 例如以下這段縮排、大小寫無規則的 T-SQL:(我猜有 Coding-Style 潔癖的人會想把作者的頭扭下來) ;WITH SupportCTE...

SQL Server 跟 Oracle 是企業常用的資料庫,但軟體授權費用頗為可觀,針對測試開發情境甚至部分的正式營運環境,倒是可考慮採用它們的免費版本,想合法省錢?這篇文章是簡單整理。 以 SQL Server 2019 為例,共分為 Enterprise、Standard、Web、Develop...

同事分享的茶包 - 踩到 SQL DateTime2 CONVERT 轉換的地雷。 SQL 的 CONVERT(VARCHAR(..), DateTime_Type, Style_Number) 可將日期型別轉成字串,格式由 Style_Number 決定,例如:110 是 yyyy-MM-dd、1...