2024-03-01 10:12 PM 4 1,619
接連兩篇談完 GUID 叢集索引會造成 INSERT 變慢以及資料表虛胖,簡單有效解決是另建 BIGINT 或 INT 自動跳號欄位當叢集索引,GUID 仍可做為 Primary Key。(參考:GUID Primary Key 資料庫避雷守則) 對上線運轉多年的現有系統來說,Schema 很難說改...
2024-02-28 10:35 PM 6 1,816
上篇我們觀察到用 GUID 做為叢集索引,INSERT 耗時較久且偶發慢到 4 ~ 6 秒的狀況。 依直覺索引碎片化的影響主要在於讀寫效能不佳(要走過更多資料分頁),但觀察容量計時我發現另一件有趣的事,同樣是一千萬筆資料,IntClustIdx 比 GuidClustIdx 多一個 BIGINT 欄...
2024-02-27 09:51 PM 2 2,344
我們都知道,資料庫使用 GUID 作為叢集索引易造成索引碎片化影響效能。若要用 GUID 作為 Primary Key,應另設自動跳號數字欄位當叢集索引。(註:不熟悉此議題的同學可先看這篇:GUID Primary Key 資料庫避雷守則) 近期在古蹟專案遇到偶發 INSERT 逾時錯誤(SqlCo...
2023-11-10 10:37 PM 3 5,825
【前言】關於 SQL 執行計劃如何影響查詢效能議題很久之前研究過了(SQL筆記:Index Scan vs Index Seek、SQL筆記:Literal, Variable與Parameter),昨天研究 網站執行 Stored Procedure 爆慢,在 SSMS 秒回問題找到 SQL Se...
2023-11-08 11:53 PM 6 7,427
一個常見問題:SQL 上某個 Stored Procedure (以下簡稱 SP),從網站應用程式執行超慢,甚至等到逾時報錯;將同樣的 SP 及呼叫參數拿到 SSMS (SQL Server Management Studio) 執行卻瞬間完成;或是 SP 慢到無法忍受,將其中語法邏輯 Copy 出...
2023-09-25 10:57 PM 3 2,634
今天學習到新知識 - 資料表欄位進行排序時,遇到 NULL 會怎麼辦?茲針對我平時較會遇到的資料庫:ORACLE、MSSQL 及 SQLite 做個整理。 我弄了一個模擬資料表,用 CorpName, StartDate, EndDate 記錄工作履歷: 查詢條件為「仍在職者(離職日為 NULL)...
2023-01-09 05:25 PM 2 3,183
要查看 SQL 指令的執行計劃,SSMS 絕對是首選,透過圖形化呈現,效能瓶頸一秒現形。(參考:應用範例) 不過,不是每一台機器都有裝或能裝 SSMS,在沒有安裝工具軟體的環境,要如何用 PowerShell/C# 取得 SQL 查詢的執行計劃呢? SQL 提供幾個控制選項 SET SHOWPLAN...
2023-01-05 10:58 PM 2 8,743
我們都知道,為 WHERE 條件用到的欄位建立索引可改善查詢效能,假設有 SQL 查詢如下,如果要為它建立索引,請問索引 Key 應包含哪些欄位? SELECT LastName,FirstName,Address,City,State,Zip,Phone FROM Employee WHERE (...
2022-04-08 10:31 PM 2 5,410
SQL LocalDB 是開發測試 SQL 程式的好夥伴,免費,比 SQL Server 輕巧,行為模式比照標準 SQL Server,很適合裝在開發主機扮演 SQL 資料庫角色。(延伸閱讀:SQL Server 2012 Express LocalDB (SqlLocalDB) 深入剖析 by 保...
2022-03-10 09:48 PM 0 4,434
調查了一起開發測試過程引發 Windows 稽核失敗事件的案例。 本機不小心在 Visual Studio 啟動了某個測試網站專案,在另一個伺服器留下多筆操作登入使用者登入失敗的 Windows 安全事件: 依據微軟文件,4625 事件用於記錄任何登入失敗,留存在嘗試登入的電腦上。這個事件也是之前...
2021-08-14 10:26 AM 3 13,284
SQL Server 從很早的版本便支援加密傳輸(早期還支援 SSL,SQL Server 2016 起只支援 TLS),在安全要求較嚴謹的環境可啟用加密連線,保護傳輸內容不被竊聽或攔截(概念上是 HTTP 與 HTTPS 的差異)。(延伸閱讀:啟用資料庫引擎的加密連線 - MS Docs) SSM...
2021-08-05 09:37 PM 0 1,890
SSMS 有個方便功能,在 Table、View、Function、Stored Procedure 等物件用右鍵選單可以產生建立該物件的 SQL Script。 產生的資料表 Script 連 Description 註解都有,拿到新資料庫執行可建立一模一樣的資料表,十分方便: USE DB_N...
2021-07-19 08:45 PM 4 5,159
我有個快速備份 SQL 資料庫 View、Function 以及 Stored Procedure 定義的需求,顯然球又飛進 PowerShell 的守備範圍。 SQL Server 有個 sys.sql_modules 資料表,包含 View、Function、Stored Procedure、T...
2021-07-01 08:33 PM 7 7,241
關於資料庫是否該用 Guid 當 Primay Key,正反雙方各有擁護著,使用 Guid 的好處是不需依賴資料庫即可取得唯一識別碼,有助提高系統設計彈性,同時 Guid 無法被猜測具安全防護效果;缺點則是不利人工查詢、消耗儲存空間及當作叢集索引(Clustered Index) 時易導致索引破碎(...
2021-06-30 07:29 PM 0 3,719
研究 SQL NEWSEQUENTIALID() 時引發一個疑問,Guid 在 .NET、SQL 的排序方式是否相同?是依據什麼規則決定大小? 答案是 .NET 與 SQL Server 排序規則不同。 例如隨機產生三個 Guid,在 .NET 的排序為 87e4077c-a7b7-48d5-b1...
2021-03-14 05:45 PM 2 2,998
前天提到我在 IIS 試跑 ASP.NET Core 開源專案 - Kandu,它的資料庫是用 MSSQL,本機跑測試我懶得開帳號,便把連線字串設成 Integrated Security=SSPI 打算走整合式驗證,用 AppPool 的身分連 SQL。就我的理解,開了名為 Kandu 的專屬 A...