執行計畫之Insert,update,delete

2022-03-06 09:34:24 字數 1216 閱讀 9641

執行以下sql。

insert into [adventureworks].[person].[address] (  [addressline1], [addressline2], [city], [stateprovinceid], [postalcode], [rowguid], [modifieddate]

) values (   '1313 mockingbird lane', 'basement', 'springfield', '79', '02134', newid(), getdate() ) ;

執行計畫如下圖:

首先我們看到的是乙個常量掃瞄(constant scan)

做的工作是根據使用者輸入的sql中的常量生成乙個行。

常量掃瞄會引入乙個或者多個常量行到乙個查詢中;通常情況下緊跟常量掃瞄的是計算標量運算子,計算標量運算子會為常量掃瞄運算子產生的行新增列。

計算標量(compute scalar)操作符呼叫乙個getidentity函式。生成自增id的值,這一步輸出了乙個表示式expr1003

另乙個標量操作符為其他資料生成一系列佔位符並生成乙個uniqueidentifier值,時間型別的資料來自於getdate()函式。

所有這些傳遞給聚集索引插入操作符。將資料插入到表中。如下圖,將之前產生的表示式的值賦給列。

聚集索引查詢,因為stateprovinceid是外來鍵,要查詢stateprocience表是否存在此值。

如上圖:這步中查詢的物件是pk_stateprovince_stateprovinceid即stateprocince表。如果此表非常大時,掃瞄的開銷也是非常大的。由此可以看出外來鍵約束的影響,斟酌考慮。

斷言(assert):判斷expr1014的值是否為0.如果為0,則引發外來鍵不存在的異常。

最後一步執行insert操作。

看了之後就忘,不如記錄下來。其中有不正確的歡迎指正。

Mysql之執行計畫

1.explain分析sql語句 例如 explain select from blog info bi inner join uam view unit account uua on bi.account instance id uua.account instance id where bi.i...

mysql 之執行計畫

原文 執行計畫,簡單的來說,是sql在資料庫中執行時的表現情況,通常用於sql效能分析,優化等場景。在mysql中使用 explain 關鍵字來檢視。如下所示 1.查詢t base user select from t base user where name andyqian 2.檢視上述語句的執...

優化之EXPAIN執行計畫

準備測試資料 create tableactor idint 22 not null auto increment,namevarchar 255 default null,update timedatetime default null,primary key id engine innodb a...