關於臨時表和表變數的差別2

来源:http://www.cnblogs.com/Gin-23333/archive/2016/01/04/5098819.html
-Advertisement-
Play Games

又是想到什麼寫什麼系列……上次http://www.cnblogs.com/Gin-23333/p/5096638.html 寫了一下,今天補充點其它的1、在事務裡面的影響,臨時表可以被回滾 而表變數是不能回滾的。簡單的例子DECLARE @T AS TABLE(ID INT,Name NVARCH...


又是想到什麼寫什麼系列……上次 http://www.cnblogs.com/Gin-23333/p/5096638.html 寫了一下,今天補充點其它的

1、在事務裡面的影響,臨時表可以被回滾 而表變數是不能回滾的。簡單的例子

DECLARE @T AS TABLE(
ID INT,
Name NVARCHAR(50)
)
IF OBJECT_ID('tempdb..#T') IS NOT NULL
    DROP TABLE #T
CREATE TABLE #T (
ID INT,
Name NVARCHAR(50)
)

BEGIN TRAN
    INSERT INTO @T
            ( ID, Name )
    VALUES  ( 1,N'Col1' );

    INSERT INTO #T
            ( ID, Name )
    VALUES  ( 1,N'Col1' );

ROLLBACK

SELECT * FROM @T
SELECT * FROM #T

@T
ID          Name
----------- --------------------------------------------------
1           Col1

#T
ID          Name
----------- --------------------------------------------------

 

 

2、臨時表定義好之後可以通過DDL語句修改結構,但是表變數就不行了

DECLARE @T AS TABLE(
ID INT PRIMARY KEY,
Name NVARCHAR(50)
)

IF OBJECT_ID('tempdb..#T') IS NOT NULL
    DROP TABLE #T

CREATE TABLE #T (
ID INT PRIMARY KEY,
Name NVARCHAR(50)
)

ALTER TABLE #T ADD Col1 nvarchar(50);
SELECT * FROM #T
ALTER TABLE @T1 ADD Col1 nvarchar(50);
SELECT * FROM @T

消息 102,級別 15,狀態 1,第 16 行
“@T1”附近有語法錯誤。
消息 102,級別 15,狀態 1,第 16 行
“Col1”附近有語法錯誤。

 

 

3、臨時表可以定義外鍵,但是表變數是不行的(這裡代碼就不寫了╮(╯_╰)╭,)

4、臨時表可以創建索引,表變數是不行的,所以中間緩存結果會比較大的時候,可以適當使用臨時表創建索引來進行優化。

5、表變數不維護統計數據。這意味著任何表變數數據更改都不會引起相關查詢語句進行重編譯

6、表變數可以引用用戶自定義數據類型,臨時表並不能,因為臨時表引用的是tempdb,而裡面並沒有定義該用戶自定義類型。

暫時想到這麼多╮(╯_╰)╭,如果想到新的東西再分享

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 如題目所示,本文要來聊一聊在游戲開發中經常會涉及到的話題——游戲AI。設計游戲AI的目標之一是要找到一種便於使用並容易拓展的的方案,常見的一些游戲AI方案包括了有限狀態機(FSM)、分層有限狀態機(HFSM)、面向目標的動作規劃(GOAP)以及分層任務網路(HTN)和行為樹(BT)等等。下麵我們就來...
  • 1.新建一個頁面,ImageCode.aspx2.在Page_Load中添加如下代碼string tmp = RndNum(4); HttpCookie a = new HttpCookie("ImageV ", tmp); Respo...
  • 存儲管理子系統(DFSMS)存儲管理也是系統的一項基本服務。系統存儲管理子系統(Storage Management System,SMS)定義了系統中的各種輸入/輸出設備,並控制這些設備的操作;同時,它還提供文件系統的基本功能,使用戶可以方便、快速地訪問數據。系統的各種程式及數據都保存在硬碟上,如...
  • 一.TCP/IP協議族 TCP/IP是一個協議族,通常分不同層次進行開發,每個層次負責不同的通信功能。包含以下四個層次:1. 鏈路層,也稱作數據鏈路層或者網路介面層,通常包括操作系統中的設備驅動程式和電腦中對應的網路介面卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理介面細節。2. 網路層,.....
  • 今天下午,幫同事重寫了一個MySQL SQL語句,該SQL語句涉及兩張表,其中一張表是字典表(需返回一個欄位),另一張表是業務表(本身就有150個欄位,需全部返回),當然,欄位的個數是否合理在這裡不予評價。平時,返回的數據大概5w左右,系統尚能收到數據。但12月31日那天,數據量大概20w,導致SQ...
  • 原理:使用公用表表達式的遞歸查詢 傳送門:https://msdn.microsoft.com/zh-cn/library/ms186243 問題:指定一個父級,查詢出該父級下麵的所有節點。 舉例說明:存在表 ComponentI為子,PP_ComponentID為父。 CREATE PROCEDU...
  • 掃描與查找操作均是SQL Server從表或索引中讀取數據採用的迭代器,這些也是SQL Server支持的最基本的運算。幾乎在每一個查詢計劃中都可以找到,因此理解它們的不同是很重要的,掃描是在整張表上進行處理,而索引是在整個頁級上進行處理,而查找則返回特定謂詞上一個或多個範圍內的數據行。下麵讓我們....
  • 1、壓縮資料庫dbcc shrinkdatabase(dbname)2、轉移資料庫給新用戶已存在用戶許可權exec sp_change_users_login'update_one','newgame','oldname'go3、檢查備份集RESTORE VERIFYONLY from disk='E...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...