بهینه سازی کوئریهای LINQ در C#.NET برای MS SQL Server
LINQ تحت عنوان یک گویش قوی برای رئیس داده ها به .NET اضافه شد. طراحی اپلیکیشن در مشهد برای مثال LINQ to SQL با به کار گیری ازEntity Framework به شما این قابلیت و امکان را میدهد با DBMS به سهولت سخن فرمایید. ولی اکثر زمان ها هنگام استعمال از آن، گسترشدهندگان فراموش مینمایند که نظارت نمایند چه نوع query SQl ای بوسیله provider ای که قابلیت و امکان کوئری زدن دارااست، ایجاد میگردد (در نمونه ما Entity Framework). دراین نوشته ی علمی ما پژوهش خوا هیم کرد که به چه شکل خواهیم توانست همت کوئریهای LINQ را باصرفه کنیم.
پیاده سازی
بیایید با به کارگیری از یک نمونه دونکته اصلی را نظارت کنیم.
آغاز بایستی مقر داده Test را در SQL Server ساخت و ساز کنیم. دراین دیتابیس با اجرای کوئری تحت دو جدول ساختوساز خواهیم شد.
USE [TEST]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Ref](
[ID] [int] NOT NULL,
[ID2] [int] NOT NULL,
[Name] [nvarchar](255) NOT NULL,
[InsertUTCDate] [datetime] NOT NULL,
CONSTRAINT [PK_Ref] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Ref] ADD CONSTRAINT [DF_Ref_InsertUTCDate] DEFAULT (getutcdate()) FOR [InsertUTCDate]
GO
USE [TEST]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customer](
[ID] [int] NOT NULL,
[Name] [nvarchar](255) NOT NULL,
[Ref_ID] [int] NOT NULL,
[InsertUTCDate] [datetime] NOT NULL,
[Ref_ID2] [int] NOT NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Customer] ADD CONSTRAINT [DF_Customer_Ref_ID] DEFAULT ((0)) FOR [Ref_ID]
GO
ALTER TABLE [dbo].[Customer] ADD CONSTRAINT [DF_Customer_InsertUTCDate] DEFAULT (getutcdate()) FOR [InsertUTCDate]
GO
هم اکنون جدول Ref را به یاری script تحت پرمی کنیم. شکیبایی فرمائید... ما تنها یک script را انجام کردیم ولی آن را ذخیره نکردیم. در اینگونه مواقعی، SQL Complete به امداد Devart بسیار شل خواهد بود، که با SSMS و Visual Studio ترکیب میگردد و دارنده خصوصیت Execution History میباشد.
این کارایی تاریخچه اعمال گردیده کوئری ها در SSMS را اکران میدهد.
اعتنا نمایید پنجره از ارکان تحت تشکیلشده میباشد :
1. جعبه کاوش برای غربال کردن حاصل
2. جعبه دامنه تاریخ برای غربال کردن نتیجه ها
3. حاصل ارائه گردیده در یک جدول. میتوانید اطلاعات را بر پایه ی ردیف های این جدول آراسته نمایید (با به کار گیری از کلید SHIFT میتوانید دسته ای از ردیف ها را برای نظم دهی گزینش نمایید)
4. کد ستون گزینش گردیده
جدول فیض دربردارنده تاریخچه اسکریپت های اعمال گردیده در SSMS میباشد و جداول پایین را مشتمل بر میشود:
Status .1: آرم میدهد که اسکریپت با توفیق انجام گردیده یا این که نه
Query Text .2: کد اسکریپت
Size (Bytes) .3: اندازه متن در واحد بایت
Executed On .4: تاریخ و ساعت اسکریپت اعمال گردیده
Duration .5: بازه فرصت اجرای اسکریپت
File .6: اسم یک فولدر یا این که زبانه در SSMS و یار و همدم با اسم مثال SQL Server که اسکریپت روی آن انجام گردیدهاست
Server .7: اسم مثال SQL Server که اسکریپت روی آن جاری ساختن شدهاست
User .8: ورود به سیستم زیر اسکریپت اعمال گردیده
Database .9: بستر مقر داده ای که اسکریپت در آن اعمال گردیده است
ما خواهیم توانست کوئری مایحتاج را درین جدول پیدا کنیم،