دلیل کند بودن order by در sql server
سلام
بنده وقتی کوئری میزنم توی کمتر از 1 ثانیه جواب میدهد ولی وقتی دستور order by به تهش اضافه میکنم 15 یا 20 ثانیه و بیشتر طول میکشد تا جواب بدهد. البته وقتی طبق ستون هایی که ایندکس کردم order by می زنم کمتر از یک ثانیه جواب میدهد.
بنده یک ستون id دارم که auto increment است بنابراین از جنس عدد است ایا ایندکس کردن برای همچین ستونی بی معنی نیست؟
مثلا منطقش این هست که که ایدی یک در ایدی یک ذخیره شده و ایدی دو در دو ذخیره شده و ...
اصلا آیا ایندکس کردن این ستون باعث افزایش سرعت می شود؟
3 پاسخ
بله 100 درصد .. ایندکس گذاشتن روی Datatype های عددی تاثیر قابل توجهی روی performance شما داره . یه نکته دیکه اینکه اگه تقریبا 30 درصد داده ها توی جدول تغییر می کنه باید جداول و gather stat یا در اصطلاح analyze کنی (ایندکس ها رو هم جداگانه می تونی rebuild کنی) .. این هم می تونه performance تو خیلی بهتر کنه روی همه شرط ها .
سایزش 35 میلیون سطر و 19 ستون
primary key نیست
پس نظر شما این است که ایندکس روی اعداد هم تاثیر دارد؟
بنده قبلا این جدول را بر اساس تاریخ پارتیشن بندی کرده بودم ولی وقتی شرایط دیگری به تاریخ اضافه می شد کوئری ها کند تر می شدند سرعت بدتر شده بود برای همین پارتیشن را حذف کردم
سلام دوست عزیز ... ستون id شما اگه primary key باشه خود پایگاه داده یک primary key index براتون می سازه و اگر نباشه شما برای بالا بردن سرعت کوئری خودتون می تونید ایندکس و روی ستون ای دی بسازید . سایز جدول تون هم می تونید بگید چقدر هست ؟