Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Το δοκίμασα, ωστόσο η σελίδα αργεί πολύ να φορτώσει (πάνω από 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:

Δημοσ.

Το δοκίμασα, ωστόσο η σελίδα αργεί πολύ να φορτώσει (πάνω από 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;

Δημοσ.

Παιδιά, τα τελικά άλλαξα το 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']) ."");

... και τρέχει χωρίς προβλήματα! Βγάζει και σωστά τα αποτελέσματα (ελπίζω να μην μου διέφυγε κάτι).

Δημοσ.

Εγω οπως το βλέπω ειναι σαν να κανεις full table scan.

Επισης μπορεις να χώσεις μπροστα EXPLAIN EXTENDED να δεις που αργει πιο πολυ

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...