הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 01-08-14, 09:16   # 1
servil
חבר מתקדם
 
servil's Avatar
 
מיני פרופיל
תאריך הצטרפות: May 2008
מיקום: חולון
גיל: 39
הודעות: 484
שלח הודעה באמצעות ICO אל servil שלח הודעה באמצעות MSN אל servil

servil לא מחובר  

שליפה איטית מאוד של נתונים ממסד נתונים - מה ניתן לעשות?

שלום,
ראשית,
אומר שהמערכת אותה אני מתכנת מבוססת PHP.
המערכת אמורה לנהל טפסי רישום של ילדים לרשת צהרונים.
נכון לרגע זה ישנן 11,470 רשומות בטבלה שנקראת rishum.
כך אני רוצה לשלוף את סטטיסטיקות הטפסים:

לוקחות כמה דק' עד שעמוד זה עולה.
הקוד לשליפת הנתונים הינו:
PHP קוד:
<center>
    <br />
<table border=0 cellspacing=1 cellpadding=0 width="1000px">
            <tr>
                <td align='right' valign='middle' style='width: 40%;text-align: right;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>שם המוסד</td>
                <td align='right' valign='middle' style='width: 15%;text-align: right;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>רישום לקייטנה</td>
                <td align='right' valign='middle' style='width: 15%;text-align: right;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>משלמים לקייטנה</td>
                <td align='center' valign='middle' style='width: 10%;text-align: center;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>רישום לצהרון</td>
                <td align='center' valign='middle' style='width: 10%;text-align: center;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>משלמים לצהרון</td>
                <td align='center' valign='middle' style='width: 5%;text-align: center;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>רשומים לבית ספר</td>
                <td align='center' valign='middle' style='width: 5%;text-align: center;padding: 5px;background: #061B2A;color: #FFF;font-weight: bold;'>רשומים לגן</td>
            </tr>
</table>
<?

?>

<?php
    $res1 
mysql_query("SELECT * FROM `places` ORDER BY `name` desc");
    while(
$row1 mysql_fetch_array($res1)) {

                
$res_ci mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `city`='".$row1["id"]."' AND `rishum_to`='1' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_ci mysql_num_rows($res_ci);
                
                
$res_ci_PAY mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`='payed' AND `city`='".$row1["id"]."' AND `rishum_to`='1' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_ci_PAY mysql_num_rows($res_ci_PAY);

                
$res2_ci mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `city`='".$row1["id"]."' AND `rishum_to`='2' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row2_ci mysql_num_rows($res2_ci);
                
                
$res2_ci_PAY mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`='payed' AND `city`='".$row1["id"]."' AND `rishum_to`='2' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row2_ci_PAY mysql_num_rows($res2_ci_PAY);
                
                
$res_countPerCity_school mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `city`='".$row1["id"]."' AND `soog_mosad`='school' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_countPerCity_school mysql_num_rows($res_countPerCity_school);
                
                
$res_countPerCity_gan mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `city`='".$row1["id"]."' AND `soog_mosad`='gan' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_countPerCity_gan mysql_num_rows($res_countPerCity_gan);
    

                if((
$row_ci+$row2_ci) > 0) {
?>
<div class="module" style="width: 1000px"><div class="module_name" align='center' style='cursor: hand;cursor: pointer;'>
<table border=0 cellspacing=1 cellpadding=0 width="1000px">
<tr class="try">
    <td align="right" style="text-align: right;width: 40%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row1["name"];?></td>
    <td align="center" style="text-align: center;width: 15%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row_ci;?></td>
    <td align="center" style="text-align: center;width: 15%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row_ci_PAY;?></td>
    <td align="center" style="text-align: center;width: 10%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row2_ci;?></td>
    <td align="center" style="text-align: center;width: 10%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row2_ci_PAY;?></td>
    <td align="center" style="text-align: center;width: 5%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row_countPerCity_school;?></td>
    <td align="center" style="text-align: center;width: 5%;padding: 5px;color: #FFF;font-weight: bold;"><?=$row_countPerCity_gan;?></td>
</tr>
</table>
</div><div class="module_links2" align='center'>

<table border=0 cellspacing=1 cellpadding=0 width="1000px">
<?
            $resCITY 
mysql_query("SELECT * FROM `schools` WHERE `city`='".$row1["id"]."' ORDER BY `type` desc,`name`");
            while(
$rowCITY mysql_fetch_array($resCITY)) {

                
$res mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `the_mosad`='".$rowCITY["id"]."' AND `rishum_to`='1' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row mysql_num_rows($res);
                
                
$res_PAY mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`='payed' AND `the_mosad`='".$rowCITY["id"]."' AND `rishum_to`='1' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_PAY mysql_num_rows($res_PAY);

                
$res2 mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `the_mosad`='".$rowCITY["id"]."' AND `rishum_to`='2' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row2 mysql_num_rows($res2);
                
                
$res2_PAY mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`='payed' AND `the_mosad`='".$rowCITY["id"]."' AND `rishum_to`='2' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row2_PAY mysql_num_rows($res2_PAY);
                
                

                if((
$row+$row2) > 0) {
?>
<tr>
    <td align="rigth" style="width: 40%;text-align: right;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"><?=$rowCITY["name"];?></td>
    <td align="center" style="width: 15%;text-align: center;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"><a href="index.php?action=rishum&sa=statistics&year=<?=$filterByYear;?>&city=<?=$row1["id"];?>&school=<?=$rowCITY["id"];?>&tofesType=1&typeee=<?=$rowCITY["type"];?><? if($_GET["aougust_form"]) { echo "&aougust_form=1"; } ?>"><?=$row;?></a></td>
    <td align="center" style="width: 15%;text-align: center;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"><?=$row_PAY;?></td>
    <td align="center" style="width:10%;text-align: center;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"><a href="index.php?action=rishum&sa=statistics&year=<?=$filterByYear;?>&city=<?=$row1["id"];?>&school=<?=$rowCITY["id"];?>&tofesType=2&typeee=<?=$rowCITY["type"];?><? if($_GET["aougust_form"]) { echo "&aougust_form=1"; } ?>"><?=$row2;?></a></td>
    <td align="center" style="width:10%;text-align: center;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"><?=$row2_PAY;?></td>
    <td align="center" style="width:5%;text-align: center;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"> --- </td>
    <td align="center" style="width:5%;text-align: center;padding: 5px;background: #ddd;color: #444444;font-weight: bold;"> --- </td>
</tr>
<?
            
}
            }
?>
</table>
</div></div>
<?
        
}
    }
    

                
$res_all mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `rishum_to`='1' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_all mysql_num_rows($res_all);
                
                
$res_all_PAY mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`='payed' AND `rishum_to`='1' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_all_PAY mysql_num_rows($res_all_PAY);

                
$res_all2 mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `rishum_to`='2' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_all2 mysql_num_rows($res_all2);
                
                
$res_all2_PAY mysql_query("SELECT * FROM (SELECT * FROM `rishum` WHERE `status`='payed' AND `rishum_to`='2' AND `aougust_form`='".$_GET["aougust_form"]."' AND `date`>='".$filterByYear."/04/22' AND `date`<='".($filterByYear+1)."/04/21') as c GROUP BY `talmid_id`");
                
$row_all2_PAY mysql_num_rows($res_all2_PAY);
    
    
?>
<table border=0 cellspacing=1 cellpadding=0 width="1000px">
            <tr>
                <td align='right' valign='middle' style='width: 40%;text-align: right;padding: 10px;background: #000;color: #FFF;font-weight: bold;'>סה"כ טפסי רישום</td>
                <td align='center' valign='middle' style='width: 15%;text-align: center;padding: 10px;background: #000;color: #FFF;font-weight: bold;'><?=$row_all;?></td>
                <td align='center' valign='middle' style='width: 15%;text-align: center;padding: 10px;background: #000;color: #FFF;font-weight: bold;'><?=$row_all_PAY;?></td>
                <td align='center' valign='middle' style='width: 10%;text-align: center;padding: 10px;background: #000;color: #FFF;font-weight: bold;'><?=$row_all2;?></td>
                <td align='center' valign='middle' style='width: 10%;text-align: center;padding: 10px;background: #000;color: #FFF;font-weight: bold;'><?=$row_all2_PAY;?></td>
                <td align='center' valign='middle' style='width: 5%;text-align: center;padding: 10px;background: #000;color: #FFF;font-weight: bold;'> --- </td>
                <td align='center' valign='middle' style='width: 5%;text-align: center;padding: 10px;background: #000;color: #FFF;font-weight: bold;'> --- </td>
            </tr>
</table>
</center>
  Reply With Quote
ישן 01-08-14, 09:24   # 2
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

תריץ את זה עם EXPLAIN ותראה מה הוא מספר.
  Reply With Quote
ישן 01-08-14, 09:53   # 3
servil
חבר מתקדם
 
servil's Avatar
 
מיני פרופיל
תאריך הצטרפות: May 2008
מיקום: חולון
גיל: 39
הודעות: 484
שלח הודעה באמצעות ICO אל servil שלח הודעה באמצעות MSN אל servil

servil לא מחובר  

נניח לשאילתה הזו:
PHP קוד:
EXPLAIN SELECT FROM (SELECT FROM `rishumWHERE `status`!='not_relevant' AND `city`='2' AND `rishum_to`='1' AND `aougust_form`='0' AND `date`>='2014/04/22' AND `date`<='2015/04/21') as c GROUP BY `talmid_id
שהמבנה שלה מופיע ברוב השאילתות בקוד...אני מקבל:
HTML קוד:
SQL result

Host: localhost
Database: shai_mask
Generation Time: Aug 01, 2014 at 07:52 AM
Generated by: phpMyAdmin 3.5.8.2 / MySQL 5.5.31
SQL query: EXPLAIN SELECT * FROM (SELECT * FROM `rishum` WHERE `status`!='not_relevant' AND `city`='2' AND `rishum_to`='1' AND `aougust_form`='0' AND `date`>='2014/04/22' AND `date`<='2015/04/21') as c GROUP BY `talmid_id`; 
Rows: 2

id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	PRIMARY	<derived2>	ALL	NULL	NULL	NULL	NULL	2535	Using temporary; Using filesort
2	DERIVED	rishum	ALL	NULL	NULL	NULL	NULL	11479	Using where
  Reply With Quote
ישן 01-08-14, 09:59   # 4
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

תיצור אינדקסים רלוונטים
  Reply With Quote
ישן 01-08-14, 10:15   # 5
servil
חבר מתקדם
 
servil's Avatar
 
מיני פרופיל
תאריך הצטרפות: May 2008
מיקום: חולון
גיל: 39
הודעות: 484
שלח הודעה באמצעות ICO אל servil שלח הודעה באמצעות MSN אל servil

servil לא מחובר  

הייתי שמח להסבר קצת יותר מפורט.
כיוון שאני לא בקיא בנושא זה.
  Reply With Quote
ישן 01-08-14, 20:34   # 6
WCMS
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: May 2007
הודעות: 629

WCMS לא מחובר  

שלום,
לגבי האיטיות תגדיר INDEX לשדות שאתה משתמש בחיפוש
כשאגיע למחשב אשלח לך את הSQL כדי להגדיר אינדקסים.
דרך איזה תוכנה אתה מנהל את המסד נתונים, בpma הכי קל להגדיר את האינדקסים אתה נכנס למבנה של הטבלה ויש בצד INDEX.

Last edited by WCMS; 01-08-14 at 20:44..
  Reply With Quote
ישן 01-08-14, 20:49   # 7
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

בשביל הסבר מפורט יותר צריך גישה ל- DB, צריך להבין את מבנה שלו וצריך לשבת ולפענח את השאילתות שאתה מראה כאן. זה נראה לי קצת מעבר לסקופ של פורום תכנות.
אם עשית את זה בעצמך, כנראה שתצטרך להבין יותר לעומק איך מה שכתבת עובד. אם מישהו עשה את זה עבורך, אולי כדאי להתייעץ איתו.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 20:37.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ