PDA

View Full Version : استفاده از فیلد int بجای GUID در PK



Amir Taghavi
چهارشنبه 21 دی 1390, 09:57 صبح
سلام

استفاده از فیلد int بجای GUID در PK در سرعت پردازش اطلاعات و گزارشات چند درصد میتواند موثر باشد؟

حمیدرضاصادقیان
چهارشنبه 21 دی 1390, 16:00 عصر
سلام.
اول بفرمائید طول فیلدهاتون چقدره؟ ساختار جدولتون به چه شکل هست؟ مثلا فیلدی برای کد کاربر ندارید که همونو PK بگیرید؟
در اینجا (http://blog.sqlauthority.com/2010/04/28/sql-server-guid-vs-int-your-opinion/) کامل در این زمینه توضیح داده شده است.
چون فیلدهای GUID به صورت رشته ای ذخیره می شوند حجم بیشتری برای ذخیره سازی نیاز دارند همچنین در ایجاد ایندکس دچار مشکل می شوند.

linux
چهارشنبه 21 دی 1390, 17:12 عصر
سلام.
اول بفرمائید طول فیلدهاتون چقدره؟ ساختار جدولتون به چه شکل هست؟ مثلا فیلدی برای کد کاربر ندارید که همونو PK بگیرید؟
در اینجا (http://blog.sqlauthority.com/2010/04/28/sql-server-guid-vs-int-your-opinion/) کامل در این زمینه توضیح داده شده است.
چون فیلدهای GUID به صورت رشته ای ذخیره می شوند حجم بیشتری برای ذخیره سازی نیاز دارند همچنین در ایجاد ایندکس دچار مشکل می شوند.
در sqlserver 2005 به بعد با استفاده از NEWSEQUENTIALID (http://msdn.microsoft.com/en-us/library/ms189786.aspx)() مشکل ایندکس را هم تا حدودی حل کرده اند.

Amir Taghavi
پنج شنبه 22 دی 1390, 14:17 عصر
من فقط میخواستم مقایسه ای بشه بین int و GUID در سرعت و کارایی و اینکه تفاوتشون در شرایط یکسان چقدره؟
وگرنه میتونم تمام GUID هارو به int تبدیل کنم

حمیدرضاصادقیان
دوشنبه 26 دی 1390, 09:04 صبح
درمورد مقایسه در پست 2 لینکی که گذاشتم کامل در این زمینه توضیح داده است.

baktash.n81@gmail.com
دوشنبه 26 دی 1390, 11:04 صبح
سلام

نوعی که انتخاب می کنی به نیازت هم بستگی داره ... مسلما کارایی GUID از int تو جستجو و Index کمتر هست ... خودت هم می تونی با Execution Plan امتحان کنی ... ولی در برخی موارد چاره ایی نداری به جز اینکه از GUID استفاده کنی ... مثلا در مواقعی که می خوای بانک اطلاعات Distrbute داشته باشی یا زمانی که یکی از امکانات نرم افزارت قابلیت تجمیع اطلاعات از چند برنامه مشابه دیگه هست ...

حمیدرضاصادقیان
سه شنبه 27 دی 1390, 10:39 صبح
مثلا در مواقعی که می خوای بانک اطلاعات Distrbute داشته باشی یا زمانی که یکی از امکانات نرم افزارت قابلیت تجمیع اطلاعات از چند برنامه مشابه دیگه هست ...
الزاما نباید برای این موارد هم از GUID به عنوان PK استفاده کرد.میشه فیلد PK از نوع INT باشه و یک فیلد به صورت GUID نیز در جدول اضافه کنید و این موارد رو روش کنترل کنید که دقیقا در Replication مشابه همین عمل اتفاق میافته.