گرفتن كوئري و فشار به سرور

Mohammadreza

Well-Known Member
سلام دوستان
من توي مديريت سايت هاي خبري بلاگ و سي ام اس ها ديدم كه مثلا جلوي هر پست بخش و مجموعه ي مربوطه رو نوشته
مي خواستم ببينم مثلا اگه توي يه صفحه 50 تا پست نمايش بده و براي هر كدوم يه دونه كوئري گرفته بشه كه مجموعه و بخش اين پست چيه !
اين فشار به سرور نمي اره ؟!
PHP:
select name from cat where id=$catid;
 

tarhebartar

Member
برای هر کدوم یک دونه نزن که , یکی می زنی برای همه رو در میاره و اینکه دیتابیس برای درخواست های میلیونی ساخته شده !
 

oldooz

Well-Known Member
دیتابیس برای درخواست های میلیونی ساخته شده !

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

tarhebartar

Member
برای درخوسات های بالا جواب میده ولی مسلما به سرور فشار میاره...
از کارای بیهوده و تکراری باید جلوگیری کرد عوضش باید یه الگوریتم خوب پیاده کنی که درخواست ها به حداقل برسه
دوستمون نمیگن که دیتابیس کم میاره میگن فشار میاد بهش

ببینید شما اگر یک سرور خوب داشته باشی هیچ وقت سر 50 تا رکورد که میاد برات سورت می کنه نباید به مشکل بر بخوری , به نظر من سایتی که 50 تا رکورد نه 100 تا رکورد بخواد بیاره و سر 50 تا کوئری هم بخواد کم بیاره باید هم برنامه اون سایت و هم سرورش رو بزاری دم در ساعت 9 شب شهرداری ببردش !!!!!

عزیز من , من کوئری دیدم که بالای 100 خطر بوده و محاسبات ریاضی انجام میداده سرور جواب میداده حالا دیگه insert,select که دیگه این حرف ها رو نداره , شما توی ایندکس 100 تا بار insert,select کنی هم هیچی نمیشه چه برسه به 50 تا !

موقعی این بحث ها میاد وسط که سیستمت خفن باشه , اینا که نه !!!!
 

tarhebartar

Member
برای درخوسات های بالا جواب میده ولی مسلما به سرور فشار میاره...
از کارای بیهوده و تکراری باید جلوگیری کرد عوضش باید یه الگوریتم خوب پیاده کنی که درخواست ها به حداقل برسه
دوستمون نمیگن که دیتابیس کم میاره میگن فشار میاد بهش
ببینید شما اگر یک سرور خوب داشته باشی هیچ وقت سر 50 تا رکورد که میاد برات سورت می کنه نباید به مشکل بر بخوری , به نظر من سایتی که 50 تا رکورد نه 100 تا رکورد بخواد بیاره و سر 50 تا کوئری هم بخواد کم بیاره باید هم برنامه اون سایت و هم سرورش رو بزاری دم در ساعت 9 شب شهرداری ببردش !!!!!

عزیز من , من کوئری دیدم که بالای 100 خطر بوده و محاسبات ریاضی انجام میداده سرور جواب میداده حالا دیگه insert,select که دیگه این حرف ها رو نداره , شما توی ایندکس 100 تا بار insert,select کنی هم هیچی نمیشه چه برسه به 50 تا !

موقعی این بحث ها میاد وسط که سیستمت خفن باشه , اینا که نه !!!!
 

Mohammadreza

Well-Known Member
ممنون از هر دوي شما دوستان عزيز ،
حالا بايد ببينم مي شه يا يه كوئري همشو درآورد !
اگه نه مجبورم از همين استفاده كنم !
بازم تشكر
 

Mohammadreza

Well-Known Member
راستي از موضوع اصلي تقريبا پرت شديم !
اگه راهي به نظرتون مي رسه كه با يه دونه كوئري هر 50 تا رو يا جا نام بخششون رو از table ديگه بگيرم ، بگيد
ممنون !
 

ziXet

مدیر انجمن PHP/MYSQL
بله راهش که معلوم ! استفاده از Join
فرض کن تیبل مطالبت اسمش entry باشه و تیبل موضوعات category حالا میخوای مثلا 50 تا entry بخونی و همزمان category هرکدوم رو دربیاری
از این استفاده میکنی:
PHP:
SELECT category.name, entry.title, entry.id, category.id FROM category, entry WHERE category.id = entry.cat_id LIMIT 0, 50
 

foranyone

Well-Known Member
راستي از موضوع اصلي تقريبا پرت شديم !
اگه راهي به نظرتون مي رسه كه با يه دونه كوئري هر 50 تا رو يا جا نام بخششون رو از table ديگه بگيرم ، بگيد
ممنون !

اول هر چندتا که میخوای select کن :

select * from table

میتونی با limit تعداد رو محدود کنی

بعد از mysql_fetch_array استفاده کن
 

ziXet

مدیر انجمن PHP/MYSQL
برای هر کدوم یک دونه نزن که , یکی می زنی برای همه رو در میاره و اینکه دیتابیس برای درخواست های میلیونی ساخته شده !
این حرف شما درسته ولی شما نباید همیشه به منابعی که داری توجه کنی! شما باید کدت رو در بهترین و بهینه ترین حالت بنویسی تا منابع کمتری مصرف کنه و بهتره از همین الان عادت به نوشتن کدهای بهینه کنید تا برای پروژه های سنگین تر با مشکل مواجه نشید.

موفق باشید
 
بله راهش که معلوم ! استفاده از Join
فرض کن تیبل مطالبت اسمش entry باشه و تیبل موضوعات category حالا میخوای مثلا 50 تا entry بخونی و همزمان category هرکدوم رو دربیاری
از این استفاده میکنی:
PHP:
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

مدیر انجمن PHP/MYSQL
امیر جان سلام . پس join کوو ؟ تو کوئری که نوشتی از Join استفاده نشده که .
من از طفولیت می خواستم بفهمم Join چیه ؟
حالا واقعا Join چیه ؟ ممنون
سلام
این همون join هست که اینجوری نوشته شده!
اگه بخوای joinهای پیچیده تر بنویسی باید از دستور JOIN و AS و ON استفاده کنی.
اینم یه مثال ساده:http://www.webdesign.org/web/web-programming/php/mysql-join-tutorial.14876.html

موفق باشید
 

جدیدترین ارسال ها

بالا