Tại sao thực hiện xóa trên chế độ xem được phân vùng của tôi dẫn đến Chèn Chỉ mục cụm?


9

Tôi có một khung nhìn được phân vùng có trình kích hoạt chèn bên dưới (phân vùng mans kém). Khi tôi thực hiện XÓA, tôi nhận được gói truy vấn bên dưới:

delete from factproductprice where pricedate = '20170725'

nhập mô tả hình ảnh ở đây

Kích hoạt trên xem:

ALTER TRIGGER [dbo].[factProductPriceDelete] ON [dbo].[FactProductPrice]
INSTEAD OF DELETE AS
BEGIN
  IF @@ROWCOUNT = 0 RETURN;

  DECLARE @PriceDate DATE
  SELECT @PriceDate = CAST(PriceDate AS DATE) FROM DELETED
  IF @PriceDate BETWEEN '20140101' AND '20141231'
  BEGIN
    DELETE FROM dbo.FactProductPrice2014
    WHERE ProductId IN (SELECT ProductId FROM DELETED) AND SalesPriceSchemeId IN (SELECT SalesPriceSchemeId FROM DELETED) AND PriceDate IN (SELECT PriceDate FROM DELETED) 
  END
  IF @PriceDate BETWEEN '20150101' AND '20151231'
  BEGIN
    DELETE FROM dbo.FactProductPrice2015
    WHERE ProductId IN (SELECT ProductId FROM DELETED) AND SalesPriceSchemeId IN (SELECT SalesPriceSchemeId FROM DELETED) AND PriceDate IN (SELECT PriceDate FROM DELETED) 
  END
  IF @PriceDate BETWEEN '20160101' AND '20161231'

.... Vân vân

Câu trả lời:


11

INSTEAD OF kích hoạt hoàn toàn thay thế hành động kích hoạt.

Các bảng giả được chènxóa đại diện cho các thay đổi sẽ được thực hiện, đã thực hiện câu lệnh kích hoạt. Định nghĩa hàng không thể được sử dụng cho các kích hoạt này bởi vì chưa có sửa đổi nào xảy ra, theo định nghĩa.

SQL Server sửa đổi kế hoạch thực hiện cho câu lệnh DML kích hoạt khi có một trình INSTEAD OFkích hoạt. Thay vì trực tiếp sửa đổi các bảng bị ảnh hưởng, kế hoạch thực hiện ghi thông tin về các thay đổi vào một bàn làm việc ẩn.

Bàn làm việc này chứa tất cả dữ liệu cần thiết để thực hiện các thay đổi ban đầu, loại sửa đổi để thực hiện trên mỗi hàng (xóa hoặc chèn), cũng như bất kỳ thông tin nào cần thiết trong trình kích hoạt cho một OUTPUTmệnh đề.

Chèn trong kế hoạch thực hiện của bạn thể hiện việc ghi vào bàn làm việc ẩn này. Khi bạn nắm bắt một kế hoạch hậu thực hiện cho câu lệnh, bạn sẽ thấy bàn làm việc ẩn này được sử dụng như các bảng giả đã xóađược chèn .

Xem bài viết SQLPerformance.com của tôi, Những điều thú vị về INSTEAD OF Triggers .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.