واضح آرشیو وب فارسی:سایت ریسک: گرفتن كوئري و فشار به سرور Mohammadreza 17 شهريور 1388, 12:25سلام دوستان من توي مديريت سايت هاي خبري بلاگ و سي ام اس ها ديدم كه مثلا جلوي هر پست بخش و مجموعه ي مربوطه رو نوشته مي خواستم ببينم مثلا اگه توي يه صفحه 50 تا پست نمايش بده و براي هر كدوم يه دونه كوئري گرفته بشه كه مجموعه و بخش اين پست چيه ! اين فشار به سرور نمي اره ؟! select name from cat where id=$catid; tarhebartar 17 شهريور 1388, 13:13برای هر کدوم یک دونه نزن که , یکی می زنی برای همه رو در میاره و اینکه دیتابیس برای درخواست های میلیونی ساخته شده ! دوستی 17 شهريور 1388, 13:49دیتابیس برای درخواست های میلیونی ساخته شده ! برای درخوسات های بالا جواب میده ولی مسلما به سرور فشار میاره... از کارای بیهوده و تکراری باید جلوگیری کرد عوضش باید یه الگوریتم خوب پیاده کنی که درخواست ها به حداقل برسه دوستمون نمیگن که دیتابیس کم میاره میگن فشار میاد بهش tarhebartar 17 شهريور 1388, 14:03برای درخوسات های بالا جواب میده ولی مسلما به سرور فشار میاره... از کارای بیهوده و تکراری باید جلوگیری کرد عوضش باید یه الگوریتم خوب پیاده کنی که درخواست ها به حداقل برسه دوستمون نمیگن که دیتابیس کم میاره میگن فشار میاد بهش ببینید شما اگر یک سرور خوب داشته باشی هیچ وقت سر 50 تا رکورد که میاد برات سورت می کنه نباید به مشکل بر بخوری , به نظر من سایتی که 50 تا رکورد نه 100 تا رکورد بخواد بیاره و سر 50 تا کوئری هم بخواد کم بیاره باید هم برنامه اون سایت و هم سرورش رو بزاری دم در ساعت 9 شب شهرداری ببردش !!!!! عزیز من , من کوئری دیدم که بالای 100 خطر بوده و محاسبات ریاضی انجام میداده سرور جواب میداده حالا دیگه insert,select که دیگه این حرف ها رو نداره , شما توی ایندکس 100 تا بار insert,select کنی هم هیچی نمیشه چه برسه به 50 تا ! موقعی این بحث ها میاد وسط که سیستمت خفن باشه , اینا که نه !!!! tarhebartar 17 شهريور 1388, 14:04برای درخوسات های بالا جواب میده ولی مسلما به سرور فشار میاره... از کارای بیهوده و تکراری باید جلوگیری کرد عوضش باید یه الگوریتم خوب پیاده کنی که درخواست ها به حداقل برسه دوستمون نمیگن که دیتابیس کم میاره میگن فشار میاد بهشببینید شما اگر یک سرور خوب داشته باشی هیچ وقت سر 50 تا رکورد که میاد برات سورت می کنه نباید به مشکل بر بخوری , به نظر من سایتی که 50 تا رکورد نه 100 تا رکورد بخواد بیاره و سر 50 تا کوئری هم بخواد کم بیاره باید هم برنامه اون سایت و هم سرورش رو بزاری دم در ساعت 9 شب شهرداری ببردش !!!!! عزیز من , من کوئری دیدم که بالای 100 خطر بوده و محاسبات ریاضی انجام میداده سرور جواب میداده حالا دیگه insert,select که دیگه این حرف ها رو نداره , شما توی ایندکس 100 تا بار insert,select کنی هم هیچی نمیشه چه برسه به 50 تا ! موقعی این بحث ها میاد وسط که سیستمت خفن باشه , اینا که نه !!!! دوستی 17 شهريور 1388, 14:14خب بالاخره تاثیر میذاره دیگه! خب فقط یه صفحه 50تایی که نیست Mohammadreza 17 شهريور 1388, 14:39ممنون از هر دوي شما دوستان عزيز ، حالا بايد ببينم مي شه يا يه كوئري همشو درآورد ! اگه نه مجبورم از همين استفاده كنم ! بازم تشكر Mohammadreza 17 شهريور 1388, 14:45راستي از موضوع اصلي تقريبا پرت شديم ! اگه راهي به نظرتون مي رسه كه با يه دونه كوئري هر 50 تا رو يا جا نام بخششون رو از table ديگه بگيرم ، بگيد ممنون ! ziXet 17 شهريور 1388, 15:36بله راهش که معلوم ! استفاده از Join فرض کن تیبل مطالبت اسمش entry باشه و تیبل موضوعات category حالا میخوای مثلا 50 تا entry بخونی و همزمان category هرکدوم رو دربیاری از این استفاده میکنی: SELECT category.name, entry.title, entry.id, category.id FROM category, entry WHERE category.id = entry.cat_id LIMIT 0, 50 foranyone 17 شهريور 1388, 15:45راستي از موضوع اصلي تقريبا پرت شديم ! اگه راهي به نظرتون مي رسه كه با يه دونه كوئري هر 50 تا رو يا جا نام بخششون رو از table ديگه بگيرم ، بگيد ممنون ! اول هر چندتا که میخوای select کن : select * from table میتونی با limit تعداد رو محدود کنی بعد از mysql_fetch_array استفاده کن ziXet 17 شهريور 1388, 15:52برای هر کدوم یک دونه نزن که , یکی می زنی برای همه رو در میاره و اینکه دیتابیس برای درخواست های میلیونی ساخته شده ! این حرف شما درسته ولی شما نباید همیشه به منابعی که داری توجه کنی! شما باید کدت رو در بهترین و بهینه ترین حالت بنویسی تا منابع کمتری مصرف کنه و بهتره از همین الان عادت به نوشتن کدهای بهینه کنید تا برای پروژه های سنگین تر با مشکل مواجه نشید. موفق باشید amirkhoshhal 17 شهريور 1388, 16:16بله راهش که معلوم ! استفاده از Join فرض کن تیبل مطالبت اسمش entry باشه و تیبل موضوعات category حالا میخوای مثلا 50 تا entry بخونی و همزمان category هرکدوم رو دربیاری از این استفاده میکنی: SELECT category.name, entry.title, entry.id, category.id FROM category, entry WHERE category.id = entry.cat_id LIMIT 0, 50 امیر جان سلام . پس join کوو ؟ تو کوئری که نوشتی از Join استفاده نشده که . من از طفولیت می خواستم بفهمم Join چیه ؟ حالا واقعا Join چیه ؟ ممنون ziXet 17 شهريور 1388, 18:21امیر جان سلام . پس join کوو ؟ تو کوئری که نوشتی از Join استفاده نشده که . من از طفولیت می خواستم بفهمم Join چیه ؟ حالا واقعا Join چیه ؟ ممنون سلام این همون join هست که اینجوری نوشته شده! اگه بخوای joinهای پیچیده تر بنویسی باید از دستور JOIN و AS و ON استفاده کنی. اینم یه مثال ساده: موفق باشید Mohammadreza 17 شهريور 1388, 18:30واقعا ممنونم اميررضا جان ، آخرشي ... بسيار مفيد و عالي بود !
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 266]