PDA

View Full Version : آیا دستور دیگری شبیه به group by داریم



sma_mohseni
دوشنبه 23 مرداد 1385, 10:16 صبح
سلام
بنده با کوئری زیر مشکل دارم


SELECT *
FROM `test`
LEFT JOIN test2 ON test.id = test2.pid
WHERE content LIKE '%است%'
GROUP BY test.id
HAVING test2.b_name LIKE '%ا%'
LIMIT 0 , 30

مشکل آنجاست که وقتی تعداد رکوردهای جدول test و test2 زیاد باشد (هر کدام حدود 5000) سرعت بسیار پایین می آید . البته بعد از تست متوجه شدم که group by باعث کندی سرعت میشود. یعنی اگر group by را از کوئری بالا حذف کنم سرعت آن قابل قبول میشود.
حالا میخواهم بدونم آیا راه دیگری هست که همین کار بالا را انجام بده ولی سرعت آن خوب باشد
متشکرم

mzjahromi
دوشنبه 23 مرداد 1385, 10:59 صبح
مطمئن هستید کوئری بالا رو کامل نوشتید؟
اصلا این کوئری جواب میده؟

sma_mohseni
دوشنبه 23 مرداد 1385, 12:30 عصر
آره کاری میکنه امتحانش کردم ولی سرعتش بسیار پایین است

mzjahromi
دوشنبه 23 مرداد 1385, 12:39 عصر
آخه ظاهر و منطق این کوئری اشتباهه.
چه کاری میخواید انجام بدید

reza_rad
دوشنبه 23 مرداد 1385, 12:47 عصر
آخه ظاهر و منطق این کوئری اشتباهه.


جناب mzjahromi از یک سری توابع که در mysql شناخته شده اند اینجا استفاده شده. که توی mysql درست کار می کنه.
و البته طبق فرمایش شما اگه با دیتابیس دیگه ای بود باید تغییر می کرد.

البته از نظر ایراد منطقی من هم با شما موافقم که این مشکل داره:)

sma_mohseni
دوشنبه 23 مرداد 1385, 12:49 عصر
فکر کنم مشکل حل شد
وقتی کوئری بالا را بصورت زیر تغییر میدهم سرعت خوب میشه


SELECT *
FROM `test`
LEFT JOIN test2 ON test.id = test2.pid
WHERE content LIKE '%است%' and test2.b_name LIKE '%ا%'
group by test.id

تنها تفاوت این کوئری با بالایی اینه که Having را حذف کردم و شرط اونو با where یکجا نوشتم