Tôi có một hàng đơn giản mà tôi chỉnh sửa bằng LINQ. Nó có khoảng 30 cột, bao gồm một chuỗi số khóa chính.Chi phí cập nhật 'Phí kiểm tra' cao hơn bao nhiêu cho LINQ UPDATES
Khi một UPDATE được thực hiện thông qua LINQ, câu lệnh UPDATE bao gồm tất cả các cột của bảng (để kiểm tra đồng thời).
Tôi tự hỏi làm thế nào không hiệu quả này là - nếu không negligibiel. Vì có một chỉ mục trên khóa chính, tôi giả định rằng cột đang được sử dụng cho tìm kiếm hàng đầu tiên và sau đó các trường khác đang được kiểm tra ngoài. Tôi sẽ không nghĩ rằng điều này sẽ mất nhiều hơn một lượng thời gian không đáng kể.
Lý do tôi hỏi là tôi đã nhìn thấy UPDATE này mất hơn một giây trong một số trường hợp, mà dường như không có vẻ đúng. Có thể có những hoạt động chạy dài khác đang diễn ra nhưng điều đó khiến tôi tò mò muốn biết liệu tôi có nên lo lắng hay không.
Tôi biết tôi có thể đặt 'UpdateCheck' thành không bao giờ cho tất cả các trường khác, nhưng đây là một nỗi đau.
Có cách nào để tắt 'Cập nhật kiểm tra' cho một SubmitChanges duy nhất() hoặc tôi phải thực hiện việc này bằng cách thay đổi 'UpdateCheck' cho mọi trường.
Mọi lời khuyên sẽ được đánh giá cao.
Dưới đây là bản cập nhật SQL:
exec sp_executesql N'UPDATE [dbo].[SiteVisit]
SET [TotalTimeOnSite] = @p12, [ContentActivatedTime] = @p13
WHERE ([SiteVisitId] = @p0) AND ([SiteUserId] IS NULL) AND ([ClientGUID] = @p1) AND ([ServerGUID] IS NULL) AND ([UserGUID] = @p2) AND ([SiteId] = @p3) AND ([EntryURL] = @p4) AND ([CampaignId] = @p5) AND ([Date] = @p6) AND ([Cookie] IS NULL) AND ([UserAgent] = @p7) AND ([Platform] IS NULL) AND ([Referer] = @p8) AND ([KnownRefererId] = @p9) AND ([FlashVersion] IS NULL) AND ([SiteURL] IS NULL) AND ([Email] IS NULL) AND ([FlexSWZVersion] IS NULL) AND ([HostAddress] IS NULL) AND ([HostName] IS NULL) AND ([InitialStageSize] IS NULL) AND ([OrderId] IS NULL) AND ([ScreenResolution] IS NULL) AND ([TotalTimeOnSite] IS NULL) AND ([CumulativeVisitCount] = @p10) AND ([ContentActivatedTime] IS NULL) AND ([ContentCompleteTime] IS NULL) AND ([MasterVersion] = @p11) AND ([VisitedHome] IS NULL) AND ([VisitedStore] IS NULL) AND ([VisitedVideoDemos] IS NULL) AND ([VisitedProducts] IS NULL) AND ([VisitedAdvantages] IS NULL) AND ([VisitedGallery] IS NULL) AND ([VisitedTestimonials] IS NULL) AND ([VisitedEvolution] IS NULL) AND ([VisitedFAQ] IS NULL)',N'@p0 int,@p1 uniqueidentifier,@p2 uniqueidentifier,@p3 int,@p4 varchar(46),@p5 varchar(3),@p6 datetime,@p7 varchar(164),@p8 varchar(36),@p9 int,@p10 int,@p11 int,@p12 int,@p13 int',@p0=1009772,@p1='039A0614-31EE-4DD9-9E1A-8A0F947E1719',@p2='C83C0E68-142A-47CB-B7F9-BAF462E79429',@p3=1,@p4='http://www.example.com/default.aspx?c=183',@p5='183',@p6='2008-11-30 18:22:59:047',@p7='Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SIMBAR={85B62341-3F6B-4645-A473-53A2D2BB66DC}; FunWebProducts; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)',@p8='http://apps.facebook.com/inthemafia/',@p9=1,@p10=1,@p11=30,@p12=6,@p13=6
giải pháp stackoverflowy cho một loại stackoverflowy của vấn đề :-) tôi đã đi với giải pháp dấu thời gian vì tôi không muốn phải thay đổi mỗi cột mỗi khi tôi cập nhật lược đồ –
Có một cách lập trình: Sửa đổi cấu trúc bên trong thông qua phản ánh . Khi mô hình bắt đầu có 100 bảng, điều này có ý nghĩa. – usr