View Full Version : سوال: دیتابیس حجیم
mamali-mohammad
پنج شنبه 12 آذر 1394, 14:28 عصر
سلام
یه دیتابیس با رکورد 10.000.000 مورد داریم
این خط رو بزنم خیلی طول میکشه تا select کنه
"SELECT * FROM `table` WHERE `active`='1'"
بهترین راه چی می تونه باشه ؟
ممنون
us1234
پنج شنبه 12 آذر 1394, 15:21 عصر
با این سلکت هیچ تصمیم خاصی نمیشه گرفت
باید شماتیک تیبل را مشخص کنید که چندتا فیلد داره ، کدام فیلد ها اندکس شده کدام فولتکس هستند و ...
mamali-mohammad
پنج شنبه 12 آذر 1394, 15:34 عصر
با این سلکت هیچ تصمیم خاصی نمیشه گرفت
باید شماتیک تیبل را مشخص کنید که چندتا فیلد داره ، کدام فیلد ها اندکس شده کدام فولتکس هستند و ...
ممنون
جدول 40 تا ردیف داره و فیلد id رو index کردم
Unique
پنج شنبه 12 آذر 1394, 19:50 عصر
جدول 40 تا ردیف داره و فیلد id رو index کردم
منظورت ستونه دیگه ؟! آخه ردیف و سطر و رکورد یکیه !
ID که معمولا خودش unique index هست و primary. وضعیت فیلد active را مشخص کن. چه مقادیری میگیره ؟ از چه نوعیه ؟
نکته بعدی اینه از کجا دقیقا میدونی مشکل از select هست ؟! اگه داری echo میگری ! طبیعیه ۱۰ میلیون رکورد طول بکشه نمایش داده بشه !
نکته بعدی اینکه واقعا کل ۴۰ تا ستون را میخوای ؟! میدونی * خودش بهینه نیست و بهتره ستون هایی که میخوای را فقط نام ببری ؟
نکته بعدی اینکه روی سرور و لوکال به یک اندازه طول میکشه !؟
لطفا توی phpmyadmin یا هر ننرم افزار مدیریتی استفاده میکنی خروجی این را برای لوکال و سرور بگذار :
explain extended SELECT * FROM table WHERE active = '1';
us1234
پنج شنبه 12 آذر 1394, 20:57 عصر
در تکمیل باید بگم
10 میلیون رکورد را همزمان میارید داخل پی اچ پی که چه کنید !؟
پیج بندی ندارید ؟
به نظرم شما هم مانند بقیه دوستان اول سلکت را میزنید و بعد میگید خوب حالا بریم سر وقت پردازش داده های که لود شده و با یک foreach شروع به پردازش میکنید .... ( huge data )
در بدترین حالت یک صفحه نهایت نیاز به 50 الی 100 رکورد داره ( paging ) بقیه رکورد ها در صفحه بعد .
دانیال دزفولی
پنج شنبه 12 آذر 1394, 21:58 عصر
منظورت ستونه دیگه ؟! آخه ردیف و سطر و رکورد یکیه !
ID که معمولا خودش unique index هست و primary. وضعیت فیلد active را مشخص کن. چه مقادیری میگیره ؟ از چه نوعیه ؟
نکته بعدی اینه از کجا دقیقا میدونی مشکل از select هست ؟! اگه داری echo میگری ! طبیعیه ۱۰ میلیون رکورد طول بکشه نمایش داده بشه !
نکته بعدی اینکه واقعا کل ۴۰ تا ستون را میخوای ؟! میدونی * خودش بهینه نیست و بهتره ستون هایی که میخوای را فقط نام ببری ؟
نکته بعدی اینکه روی سرور و لوکال به یک اندازه طول میکشه !؟
لطفا توی phpmyadmin یا هر ننرم افزار مدیریتی استفاده میکنی خروجی این را برای لوکال و سرور بگذار :
explain extended SELECT * FROM table WHERE active = '1';
میشه بگید explain extended دقیقا چکار میکنه ؟
Unique
جمعه 13 آذر 1394, 03:31 صبح
میشه بگید explain extended دقیقا چکار میکنه ؟
یکسری اطلاعات بر میگردونه که از طریقش میشه فهمید query چطور توی mysql داره تفسیر میشه و متوجه شد باید چه Index یا تغییر دیگه ای را اعمال کرد.
R_Rajaee_Rad
جمعه 13 آذر 1394, 10:24 صبح
۴۰ تا فیلد در یک جدول؟
اونوقت همه این فیلدها پر میشن یا به تناسب نوعشون امکان NUll بودن بعضی هاشون هست؟
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.