ورود

View Full Version : سوال: مشکل با یک کوئری



fh_joker
دوشنبه 16 آذر 1394, 12:35 عصر
سلام
توی یه برنامه به مشکل برخوردم کوئریش اینه :

SELECT DISTINCT a1.`field`, a1.`field2`,`date`,(select count(distinct `field`) as num2
from `tabel` as a2
where a2.`field2`= a1.`field2`
and `flag`='Y' And (date BETWEEN '1394-08-01' AND '1394-09-16')) as numy,
(select count(distinct `field`) as numi2
from `tabel` as a3 where a3.`field2`=a1.`field2`
and `flag`='N' And (date BETWEEN '1394-08-01' AND '1394-09-16')) as numn
FROM `tabel` as a1 where (STR_TO_DATE(date, '%Y-%m-%d') IS NOT NULL) And (date BETWEEN '1394-08-01' AND '1394-09-16') GROUP BY `field2` order by `field2`
وقتی اجرا میشه در حال لود باقی می مونه و باید سرویس mysql رو ریست کنم
کوئری رو خودم ننوشتم برنامه کار شخص دیگه ای بوده.
دوستان ممون میشم راهنمایی کنید.

mohammadghane
دوشنبه 16 آذر 1394, 17:40 عصر
مشکل شما به خاطر select هایی هست که داخل Select اصلی وجود داره و توی حجم داده بالا باعث خطای too many connection در پایگاه داده و رسیدن آمپر CPU به 100 درصد و هنگ شدن سیستم میشه و مجبورید دوباره یرویسشو ریست کنید.
راه حلش استفاده از join هستش و توی طراحی جداول هم باید فیلد هایی که توی where و on قرار می گیرن index گذاری شوند