دسته بندی ها
13:11 1401/08/24

تاثیر foreign key(کلید خارجی) و Performance در Entity Framework

مشخصات سوال کننده :
کاربر : mojtabajalilian1401     امتیاز کاربر : 3     رتبه کاربر : 136
دسته بندی : Asp.net Web Form Asp.net Mvc Asp.net Core Web Api

به این سوال امتیاز بدهید    1
تعداد بازدید این سوال : 1764
پاسخ دهنده : fateme 11:31 1401/08/25

دوست عزیز نرم افزار های مدیریت پایگاه داده همونطور که از نامشون پیداست RDBMS گفته میشه. یعنی Related Database Management Studio. که معنیش میشه "محیط مدیریت پایگاه داده رابطه ای " 

یعنی رابطه جزو ساختار دیتابیس هست و بدون رابطه اصلا دیتابیس صرفا چندتا فایل هست که اطلاعات توش نگهداری شده. ایجاد کلیدهای اصلی (Primary Key) و کلیدهای خارجی (Forign Key) جزوی از ساختار دیتابیس هستن و بدون اینها دیتابیس شما Normal نیست. اگر شما کلید خارجی نداشته باشید احتمال ایجاد آنومالی و افزونگی داده در جداول شما بشدت بالا میره (در مورد نرمال سازی، افزونگی داده و آنومالی در دیتابیس جستجو کنید)

اما در مورد Performance قطعا وقتی روابط بین جداول ایجاد میشن در کارایی دیتابیس تاثیر دارن و ممکنه قدری باعث کند شدن جستجو ها بشه اما نکته اصلی اینجاست که شما اگر این روابط رو تعریف نکنید و به وجود نیارید جستجوها و واکشی اطلاعات به مراتب پیچیده تر و ضعیف تر میشن. دلیلش هم واضحه، شما وقتی اطلاعاتی رو میخواید به کاربر نشون بدید قطعا در بیشتر موارد این اطلاعات از جداول مختلف نمایش داده میشه و ناچار هستید Join هایی داشته باشید. در این موارد شما باید Join های خودتون رو از طریق دستورات Entity Framework انجام بدید در حالی که اگر کلید خارجی تعریف می کردید این Join ها در داخل خود Sql Server انجام میشه و به مراتب Join خود Sql سریعتر از انتیتی فریم ورک هست.

به این پاسخ امتیاز بدهید    2
امتیاز: 1617 رتبه: 2
2 نظر
mojtabajalilian1401 : ممنون از توضیحات. برای توصیف بیشتر در موضوع ما درحال تغییر پلتفرم از Ado به Entity هستیم.روی یه دیتابیس در بیشتر صفحه های برنامه در Ado در کمتر از 1 ثانیه اجرا می شه اما همان صفحات با Entity بالای 5 یا 7 ثانیه اجرا میشه .وهمکاران Develop این کندی بخاطر Relation می دونن.

امتیاز کاربر : 3   رتبه کاربر : 136   تاریخ ثبت : 12:46 1401/08/25
fateme : کلا سرعت اجرای دستورات ADO از Entity بیشتره چون ADO دستورات رو مستقیم میبره توی خود Sql Server اجرا میکنه ولی انتیتی بسیاری از عملیات توسط خودش انجام میشه

امتیاز کاربر : 1617   رتبه کاربر : 2   تاریخ ثبت : 03:51 1401/08/25
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود