C# sql sorgusuna çok basit bir linq var nedenseLINQ Parametre
exec sp_executesql N'SELECT [t0].field1, [t0].field2, [t0].ACCT_NO
FROM [dbo].[table] AS [t0]
WHERE [t0].[ACCT_NO] = @p0', N'@p0 decimal(29,0)', @p0 = 12345
, bu inanılmaz uzun sürüyor Kaçma zamanı (birkaç dakika). Yönetim stüdyosunda eşdeğer bir sorgu çalıştırırsam (acct_no = 12345 tablosundan * seçin), çok büyük bir tabloda bir saniyeden daha az sürer (~ 7MM satır). SQL profiler ile kazı yaptıktan sonra, linq'in bir Onalt (29,0) olarak acctNum parametresini geçtiğini ve alanın bir Sayısal (18,0) olarak veritabanında saklandığını buldum. Oluşturulan SQL'i alır ve parametre tipini ondalıktan sayısal olarak değiştirirseniz, bir saniyeden daha az bir sürede çalışır. Profilde, linq versiyonunun sayısal parametre sorgusu için yaklaşık 2 milyon okuma kullandığını görebiliyorum. Linq'in bu parametreyi onluk yerine sayısal olarak iletmesini nasıl zorlayabilirim?
Temel veritabanı alanının SQL veri türünü kastediyor musunuz? Onun bir sayısal (18,0). – maxpower47
Hayır, 'p' türü ne olursa olsun 'ACCT_NO' özelliğinin türünü kastediyorum. –
VS'de p.ACCT_NO Ondalık olarak gösterilir. Bunu nasıl değiştirebilirim? – maxpower47