Tag: T-SQL

0

透過參考數值設定In Memory Table的Index

自從SQL 2014開始,有了In Memory Table感覺在效能上又多了一道曙光,而到了SQL 2016這部分又更強化了,可用的SQL語句又增加,雖然In Memory Table是可以增加效能,但是,如果沒有設定好index反而會造成效益不彰的狀況,這幾天針對這部分進行一些調教,原本以為跟傳統資料表設定index一樣,最後發其實沒有這樣簡單,反而相對複雜,主要是因為在In Memory

0

使用Memory Table前須先建立資料庫的Memory最佳化檔案群組群組

在SQL 2014之後,有了Memory Table這功能後,在處理大量資料上的效能相對於以往加快不少,不過,在使用這項功能前必須先建立好該資料庫的Memory Optimize檔案群組,這個在預設是不會產生的,每次都會忘記要先做這一個步驟,導致建立Memory Table都會發生錯誤 記憶體最佳化檔案群組被建立後,會有幾點限制,須事前要先注意 無法進行刪除動作,除非是卸載該資料庫,才能讓它被

0

找DataBase資料表的Miss Index並建立

一般開發系統人員常常遇到當自己系統跑一段時間後,就會被使用者抱怨說系統怎越跑越慢,當然,系統越跑越慢的因素很多,其中一項就是Table該要有的Index卻沒有建立,在系統初期設計上,不是很容易訂定有效的,不過,當系統越來越大時候,透過SQL Server的統計資訊分析後,去找出較為精準的Index反而會簡單一點,且Index不是建立越多越好,不好的Index反而會讓系統效能變低。 因此,在有一次

0

T-SQL 時間欄位的格式化(用Convert / Cast作法)

用T-SQL要把資料的時間輸出想要的格式是很常見的需求,例如:年月日時分秒或是年月日,在C#可以用tostring("yyyy-MM-dd")方式。在T-SQL中可以用Convert或是Cast,但是,每次用Convert時候,都還要去記住格式化的代碼有點難,這邊整理一些相關資訊,供大家參考也給自己記憶。 用Cast方式,可以轉換成下列幾種格式 分別執行結果如下:

0

Cannot truncate table,because it is being referenced by a FOREIGN KEY constraint?

今天測試資料完畢,想要把所有測試表全部truncate table,竟然出現下面字樣 Cannot truncate table ‘XXXXX’ because it is being referenced by a FOREIGN KEY constraint.” 現在才知道若是這個資料表的主索引,是別的資料表的FK,則不能直接使用 truncate table,將所有相關性資料一次清掉,

0

SQL Pivot 動態陳述式

很多報表需求在輸出時候常需要做欄位轉置,雖然,這動作可以在.Net做,也可以在T-SQL做,至於,兩者如何取其一,將必須視當時情境決定。 自從SQL2005後已經內建Pivot功能,SQL Pivot基本用法,不過,說真的用了MS SQL Pivot Function感覺還有點陽春,只能針對兩個欄位的其中一個欄位進行轉置,一個欄位固定,這樣往往不敷企業需求,在企業報表都是會有多個固定欄位而針對一