大部分情況,where 中使用 not 操作都無法使用索引搜尋,
都將使用table / index 掃描取代資料存取方式
大部分情況,where 中使用 not 操作都無法使用索引搜尋,
都將使用table / index 掃描取代資料存取方式
這篇來看看比較複雜的多對多查詢
SQL 2017開始提供Graph database,主要用來解釋複雜的多對多(M:N)關聯性,
好比社群複雜的階層資料,而且已經和TSQL(called MATCH())完全整合
樹狀(hierarchy)形結構資料,真實世界中很常見,SQL2005大多都使用CTE遞迴來達到目的,EF6開始也有支援該資料類型。
SQL2012推出format function,這項加強,對於開發人員,在處理跨國系統日期和時間顯示相當方便。
SQL2017針對In-Memory OLTP又改善不少,這篇來整理一下和SQL2016的比較。
透過EF呼叫SP,SP中的throw無法拋回前端,就像exception被吃掉了一樣
SQL Server提供Xact_abort來處理run-time發生錯誤的TSQL,
可幫助將現有交易或相依交易自動rolls back,而Xact_abort也是我開發交易必要習慣,
建議有使用SQL Server的朋友可啟用,Xact_abort會幫我們築起最後一道安全交易防線。
使用者在網頁點擊按鈕,難免會不小心點了兩次以上,
如果這是一個heavy query(like report),一來浪費SQL Server資源,假如該SP又包含一些資料邏輯處理更新,
那麼也有可能發生資料不一致的情況,我們來看看如何從SQL Server下手來預防這狀況。
當你要將old sp移轉為native sp,千萬不要忘記Native Compilation Advisor這好朋友。
當我們使用Exists判斷資料是否存在時,是否需要再子查詢中額外使用 Top 1來告訴QO,
我只需判斷一筆資料即可,請不要進行多餘(非必要)的處理。
No Join Predicate警告,是指出在這Query中,有存在無聯結述詞,那我們到底要不要在意這警告呢?
最近進行SQL Tuning時,深入查看相關執行計畫,發現QO改寫用有趣的陳敘式,馬上又引起我的興趣
SQL Server process的狀態為sleeping,
如果一個資料庫有太多的sleeping process會有影響嗎?這些process是否可能封鎖其他process呢?
執行dynamic sql請使用sp_executesql
SQL Server 2012推出Columnstore indexes第一個版本,
主要是提高OLAP查詢效能,並改用欄位為單位方式進行儲存,
但諸多限制對OLTP環境相當不有善(建立後資料表變唯讀、只能使用drop and create模式..等),
現在SQL Server 2016讓我們看到Columnstore indexes這幾年堅持及一路走來的改善。
來看看SQL2016的TSQL有那些增強
這篇來看如何查詢時態表和轉換時態表操作
SQL2016新增壓縮和解壓縮純量值函式,
將輸入內容透過GZIP演算法壓縮並返回varbinary(max)資料型別,
這些函式對我來說相當實用且重要。