philos Δημοσ. 4 Μαΐου 2014 Μέλος Δημοσ. 4 Μαΐου 2014 Το δοκίμασα, ωστόσο η σελίδα αργεί πολύ να φορτώσει (πάνω από 120 seconds). Είσαι σίγουρος ότι το: where postid in ( select firstpostid from thread where forumid not in ('4', '73', '99', '76', '78', '77', '0') ) Είναι βελτιστοποιημένη λύση; Σκέψου ότι επιλέγει τα firstpostid (= threads) ενός ολόκληρου forum με 100.000 threads και τα βάζεις σε μία IN (blahblah) :hmm:
geomagas Δημοσ. 4 Μαΐου 2014 Δημοσ. 4 Μαΐου 2014 Το δοκίμασα, ωστόσο η σελίδα αργεί πολύ να φορτώσει (πάνω από 120 seconds). Δηλαδή ξεπέρασες το λάθος; Είσαι σίγουρος ότι το: where postid in ( select firstpostid from thread where forumid not in ('4', '73', '99', '76', '78', '77', '0') )Είναι βελτιστοποιημένη λύση;Σκέψου ότι επιλέγει τα firstpostid (= threads) ενός ολόκληρου forum με 100.000 threads και τα βάζεις σε μία IN (blahblah) :hmm: Όχι δεν είπα ότι είναι βελτιστοποιημένη. Άλλωστε είπα ήδη ότι επιδέχεται βελτιώσεις, και αυτή είναι μία από αυτές (join αντί in). Παρόλα αυτά, τα 120sec ακόμα και με 100.000 εγγραφές μου φαίνονται υπερβολικά πολλά. Τι indexes έχει ο πίνακας thread;
philos Δημοσ. 8 Μαΐου 2014 Μέλος Δημοσ. 8 Μαΐου 2014 Παιδιά, τα τελικά άλλαξα το query σε: $top_threads_up = $vbulletin->db->query_read(" SELECT COUNT(sc_thumbs_post.thumb) AS sum1, thread.threadid, thread.postuserid, thread.postusername, thread.title AS title, thread.forumid, thread.replycount, thread.views, thread.dateline FROM " . TABLE_PREFIX . "sc_thumbs_post AS sc_thumbs_post LEFT JOIN " . TABLE_PREFIX . "thread AS thread ON (thread.firstpostid = sc_thumbs_post.postid) WHERE YEARWEEK(from_unixtime(sc_thumbs_post.dateline), 0) = YEARWEEK(CURRENT_DATE, 0) AND (sc_thumbs_post.thumb = 1) AND thread.forumid NOT IN ('" . implode("', '", $final_excludearray) . "') GROUP BY thread.threadid ORDER BY sum1 DESC, thread.lastpost DESC LIMIT ". intval($mod_options['sc_top_thumbup_threads_limit']) .""); ... και τρέχει χωρίς προβλήματα! Βγάζει και σωστά τα αποτελέσματα (ελπίζω να μην μου διέφυγε κάτι).
ParhsG Δημοσ. 8 Μαΐου 2014 Δημοσ. 8 Μαΐου 2014 Εγω οπως το βλέπω ειναι σαν να κανεις full table scan. Επισης μπορεις να χώσεις μπροστα EXPLAIN EXTENDED να δεις που αργει πιο πολυ
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα