بهینه سازی و ارتقاء زیرساخت

عیب یابی و رفع مشکلات

ارائه طرح جامع بهینه سازی و ارتقا زیرساخت شبکه های کامپیوتری

ادامه مطلب

ایمیل سرور اختصاصی

پست الکترونیک سازمانی

به همراه راهکار ارتباطات یکپارچه Microsoft Lync

ادامه مطلب

سامانه دورکاری

مجازی سازی برنامه

دسترسی راه دور به برنامه ها از طریق راهکار سیتریکس

ادامه مطلب

خدمات میزبانی سرویس

ارائه سرور مجازی و اختصاصی در ایران و خارج

اجاره رک و فضا (Colocation) در دیتاسنتر پال نت و مشاوره راه اندازی هاستینگ اختصاصی

ادامه مطلب

فایروال شبکه

تامین امنیت زیرساخت شبکه

ارائه کامل ترین فایروال دنیا با لایسنس رایگان مادام العمر

ادامه مطلب

مشاوره فناوری اطلاعات

خدمات مشاوره تخصصی در حوزه فناوری اطلاعات و انفورماتیک IT، تهیه طرح ارزیابی وضعیت فعلی شبکه و سرویس ارائه راهکار شبکه و مستند از وضعیت مطلوب

راهکارهای تخصصی شبکه

راهکارهای تخصصی در حوزه فناوری اطلاعات، بهینه سازی و ارتقاء زیرساخت شبکه، نگهداری و پشتیبانی از شبکه های کامپیوتری و ارائه خدمات جامع

پشتیبانی و نگهداری شبکه

ارائه خدمات پشتیبانی شبکه، نگهداری زیرساخت و سرورهای کامپیوتری، ارتقاء سرویس ها و سخت افزارهای شبکه، بررسی رفع مشکلات کندی سرعت شبکه

آموزش تخصصی شبکه

موسسه آموزش های تخصصی گروه با فراهم کردن فضای آموزشی مجهز و امکانات مناسب، خدمات آموزشی مطلوبی را به مشتریان و داوطلبان آزاد ارائه می‌کنیم

تصمیم داریم در این مبحث، به آموزش بانک اطلاعاتی اس کیو ال سرور SQL Server Database پرداخته و دستور زبان T-SQL را بیشتر توضیح دهیم تا شما را با نکاتی آشنا کنم که شاید کمتر با آن ها برخورد کرده باشید.

ترکیب Set Operations و Join ها در سرور SQL

در این مطلب میخواهیم از ترکیب Set Operations و Join ها با شما صحبت کنیم.

فرض کنید ما تصمیم داریم بین دو تا جدول Inner join بزنیم ولی یکی از فیلدهای شرط ما Null هست.

خوب اگر ما بیایم این دو فیلد رو مساوی قرار بدهیم، چون Null نمیتواند مساوی قرار بگیرد پس در واقع در شرط به صورت Unknown ارزیابی میشود و مقدار False برمیگرداند ولی براساس شرط ما این ردیف نیز باید برگردد.

تصمیم داریم در این مبحث، به آموزش بانک اطلاعاتی اس کیو ال سرور SQL Server Database پرداخته و دستور زبان T-SQL را بیشتر توضیح دهیم تا شما را با نکاتی آشنا کنم که شاید کمتر با آن ها برخورد کرده باشید.

راه دوم این است که بیاییم این دو فیلد را با مقدار Isnull باهم مقایسه کنیم.

SELECT EL.country, EL.region, EL.city, EL.numemps, CL.numcusts
FROM dbo.EmpLocations AS EL
INNER JOIN dbo.CustLocations AS CL
ON EL.country = CL.country
AND ISNULL(EL.region, N'<N/A>') = ISNULL(CL.region, N'<N/A>')
AND EL.city = CL.city;

در اینجا مشکل ما حل میشود و مقدار رکورد مورد نظر برمیگردد ولی چون فیلدهای Region دستخوش تغییرات شده اند در جستجوهای ما SQL Server  دیگر به Sort بر روی این فیلدها نگاهی نمیکند (اگر ایندکسی بر روی انها باشد و سورت شده باشد)‌و اگر رکوردها زیاد باشند و Merge join انجام شود خودش یک Sort انجام میدهد. یا در تعداد پایین می آید ابتدا Index Seek بر روی شرط Country انجام میشود و دو شرط بعدی در واقع بر روی کل رکوردهای باقی مانده انجام میشود.که یک مقایسه زیادی هست.

راه سوم این هست که بیایم ازدستور Isnull استفاده کنیم.

SELECT EL.country, EL.region, EL.city, EL.numemps, CL.numcusts
FROM dbo.EmpLocations AS EL
INNER JOIN dbo.CustLocations AS CL
ON EL.country = CL.country
AND (EL.region = CL.region OR (EL.region IS NULL AND CL.region IS NULL))
AND EL.city = CL.city;

در این روش کل شرط ها در Index Seek انجام می پذیرد و پلن بهینه ای خواهیم داشت و از Sort روی ایندکس ها نیز بهره میبرد.

راه بعدی هم ترکیب Set Operation ها و Join هست.

SELECT EL.country, EL.region, EL.city, EL.numemps, CL.numcusts
FROM dbo.EmpLocations AS EL
INNER JOIN dbo.CustLocations AS CL
ON EXISTS (SELECT EL.country, EL.region, EL.city
intersect
SELECT CL.country, CL.region, CL.city);

در این روش پلن ایجاد شده مانند کد قبل هست و پلن بهینه ای تولید میشود و چون Intersect  میتواند Null را ارزیابی کند پس آن ردیفی که دارای Region برابر Null هست نیز داخل رکوردهای ما هست و در پلن بیرونی نیز ارزیابی میشود.

آموزش دستور در زبان T-SQL

غالباً برای یک رشته ای که با , از هم جدا شده نیاز است که به صورت جدول تبدیل می کنند و برای این امر شروع به نوشتن توابعی کردند که معمولا بهینه نبوده است.

از نسخه ۲۰۱۶ به بعد تابعی به اسم String_split به زبان قدرتمند T-SQL اضافه شده که اینکار را برای شما می کند.

برای استفاده ا زاین تابع حتما باید Compatibility level برابر ۱۳۰ یا بزرگتر باشد.

نمونه استفاده این تابع هم در کد زیر ملاحظه می کنید.

DECLARE @orderids AS VARCHAR(MAX) = N'10248,10542,10731,10765,10812';
SELECT value
FROM STRING_SPLIT(@orderids, ',');

به دلیل این که یک Result Set برگردانده میشود میتوانید در Join ها و Apply و ... نیز استفاده کنید.

تماس با ما

 تهران، مطهری، میرعماد، کوچه دهم، پلاک 14 واحد 2 
تلفن تماس: 88173317 021
ارتباط زنده اینترنتی 24 ساعته از طریق تلگرام با کارشناسان پشتیبانی مهندسی شبکه پال نت کانال تلگرام PalnetGroup@
پشتیبانی شبکه و ارتباط برخط و آنلاین از طریق واتس اپ WhatsApp با شماره موبایل ارتباط با واتس اپ
WhatsApp
گفتگوی آنلاین از طریق واتس اپ با کارشناسان گروه برای ارسال  پیشنهادات و  مستندات و حتی ارتباط در مواقع ضروری

JoomShaper