ایندکس گذاری برای کاهش زمان پاسخ روی ستون های timestamp

- 6 روز پیش
توسط Alimotreb آپدیت شد
smart ( 3380 تجربه )
1 هفته پیش

سلام. وقت بخیر. من یه جدول محصولات دارم که هر محصول یه دوره "در دسترس بودن" داره. یه ستون به اسم begin_time و یه ستون دیگه به اسم end_time داره که زمان شروع و پایان در دسترس بودن هر محصول رو مشخص میکنه.
کاربرا توی بخش فیلتر میتونن یه دوره زمانی رو مشخص کنن که محصولات در دسترس رو تو اون دوره نشون میده. این دوره هم میتونه از چند ساعت تا چند هفته باشه. مثلا محصولات در دسترس از امروز تا یه ماه دیگه.
کوئری که نوشتم اگه محصولی پیدا بشه بدون مشکل کار میکنه و سریع هم هست. ولی وقتی توی اون دوره زمانی محصولی پیدا نشه، کل جدول رو میگرده که بتونه محصول در دسترس پیدا کنه. نکته اینکه این جدول چندین میلیون رکورد داره. و خب تا گشتن کل این رکوردا زمان خیلی زیادی طول میکشه.
من خواستم با index گذاری روی brgin_time و end_time این زمان رو کم کنم ولی تاثیری نداشت. شاید به خاطر اینکه begin_time محصولات تقریبا همه با هم متفاوتن. end_time هم همینطور.
میخواستم ببینم راه حلی هست که بشه این زمان رو کم کرد ؟ ایندکس گذاری راه حله؟ یا روش دیگه ای هست ؟

Alimotreb ( 100782 تجربه )
7 روز پیش
تخصص : کانفیگ سرور و برنامه نویس

سلام
@smartgarden2016

پیشنهاد من ایجاد فیلتر های بیشتر هست
اگر به فرض فقط 2 تا فیلتر باشه که کالا هایی که موجود هست رو بده از فلان تایمن تا فلان تایم
خب کوئری بزنید رکورد زیاد باشه تحلیلش زیاد میشه!
ولی به فرض تو دسته پوشاک ، شلوار ، آبی ها ، کدوما موجودن...!
این میتونه تو کوئری خیلی تاثیر داشته باشه

pagination هم فراموش نش تو این مواقع!!

smart ( 3380 تجربه )
7 روز پیش

درود @Alimotreb
اصل بخش فیلتر همین هست. و باید به این شکل باشه. و در کل مشکلی هم نداره البته. pagination هم انجام میشه.
فقط توی یه حالت که طبق ورودی ها محصولی رو پیدا نمیکنه مجبوره کل جدول رو بگرده که همین باعث میشه زمان زیادی طول بکشه.

البته باید بگم تست کردم با حدود 500000 پانصدهزار رکورد روی یه هاست خیلی خیلی معمولی همین بخش دوم هم در حد میلی ثانیه طول میکشه ولی وقتی به چندین میلیون رکورد برسه ممکنه تاخیر داشته باشه.

Alimotreb ( 100782 تجربه )
6 روز پیش
تخصص : کانفیگ سرور و برنامه نویس

سلام
@smartgarden2016

در کل به نظرم اون تایم زیاد محسوس نیست
روی Mysql 5.7
و حتی mariadb عملکرد بسیار خوبی داره به طوری که شما حس نمیکنی!

برای ارسال پاسخ باید وارد سایت شوید