تا %60 تخفیف خرید برای 3 نفر با صدور مدرک فقط تا
00 00 00
spyderman

دلیل کند بودن order by در sql server

سلام

بنده وقتی کوئری میزنم توی کمتر از 1 ثانیه جواب میدهد ولی وقتی  دستور  order by  به تهش اضافه میکنم 15 یا 20 ثانیه و بیشتر طول میکشد تا جواب بدهد. البته وقتی طبق ستون هایی که ایندکس کردم order by   می زنم کمتر از یک ثانیه جواب میدهد.

بنده یک ستون id   دارم که auto increment است بنابراین از جنس عدد است  ایا ایندکس کردن برای همچین ستونی بی معنی نیست؟

مثلا منطقش این هست که که ایدی یک در ایدی یک ذخیره شده و ایدی دو در دو ذخیره شده و ...

اصلا آیا ایندکس کردن این ستون باعث افزایش سرعت می شود؟

 

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

سلام دوست عزیز  ... ستون id شما اگه primary key باشه خود پایگاه داده یک primary key index براتون می سازه و اگر نباشه شما برای بالا بردن سرعت کوئری خودتون می تونید ایندکس و روی ستون ای دی بسازید . سایز جدول تون هم می تونید بگید چقدر هست ؟

همیشه شاگرد ... حامد فروردین
  • انتخاب شده به عنوان جواب توسط 1 نفر
spyderman

سایزش 35 میلیون سطر و 19 ستون

primary key  نیست

پس نظر شما این است که ایندکس روی اعداد هم تاثیر دارد؟

 

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

بله 100 درصد .. ایندکس گذاشتن روی Datatype های عددی تاثیر قابل توجهی روی performance شما داره .  یه نکته دیکه اینکه اگه تقریبا 30 درصد داده ها توی جدول تغییر می کنه باید جداول و gather stat یا در اصطلاح analyze کنی (ایندکس ها رو هم جداگانه می تونی rebuild کنی) .. این هم می تونه performance تو خیلی بهتر کنه روی همه شرط ها .

همیشه شاگرد ... حامد فروردین
پاسخ شما
برای ارسال پاسخ خود وارد شوید.