Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Collections System - problem z zapytaniem


Rekomendowane odpowiedzi

Opublikowano

Cześć!

 

Używam tego moda http://community.invisionpower.com/files/file/5073-m34-collections-system/ (w najnowszej wersji)

Działający można zobaczyć tutaj http://www.piwo.org/katalog/

Wejście w najliczniejszą kategorię (171 wpisów), powoduje prawie 3-7 sekundowe generowanie strony. Muli się strasznie.

Slow log pokazuje, że to poniższe zapytanie jest za to odpowiedzialne.

 

# Time: 130401 17:04:17
# User@Host: root[root] @ localhost []
# Query_time: 6.292930  Lock_time: 0.000145 Rows_sent: 10  Rows_examined: 884984
use table_1;
SET timestamp=1364828657;

SELECT gl.*,gi.*,r.rate_id, avg(r.rating) as item_rating,cf.* FROM ipb_collections_items gl  LEFT JOIN ipb_collections_images gi ON ( gl.default_image=gi.image_id )
 LEFT JOIN ipb_collections_rating r ON ( gl.id=r.rate_item_id )
 LEFT JOIN ipb_collections_fields_user cf ON ( cf.value_item_id=gl.id )   WHERE cid=4 GROUP BY gl.id ORDER BY date_added desc LIMIT 10,10;

 

 

W  kodzie wygląda to tak

 

 // Get Item List      
 //-----------------------------------------

            $thumbnail = explode( 'x', strtolower( $this->settings['css_small_thumbnail'] ) );

                $this->DB->build( array(
                'select' => 'gl.*',     'group' => 'gl.id', 'from' => array('collections_items' => 'gl'), 'order' => "{$orderby} {$orderhow}", 'limit'  => ar
ray( $page,$max_results ),
                'add_join'      => array
                (
               0 => array( 'select' => 'gi.*', 'from'   => array( 'collections_images' => 'gi' ), 'where'  => "gl.default_image=gi.image_id", 'type' => 'left
'),
           1 => array( 'select' => 'r.rate_id, avg(r.rating) as item_rating', 'from'   => array( 'collections_rating' => 'r' ), 'where'  => "gl.id=r.rate_ite
m_id", 'type'   => 'left' ),
           2 => array( 'select' => 'cf.*', 'from'   => array( 'collections_fields_user' => 'cf' ), 'where'  => "cf.value_item_id=gl.id", 'type' => 'left'),
        ), 'where' => $where ));

                $this->DB->execute();

                while( $data = $this->DB->fetch() )
                {
                    $data['item_rating'] = round( $data['item_rating'] );

            # Fixed Thumbnail
            $data['thumb_width'] = $thumbnail[0];
            $data['thumb_height'] = $thumbnail[1];

                        $data = $this->registry->getClass('collections_functions')->field_process( $data );
                        $items[] = $data;
                }

 

 

Czy ma ktoś wiedzę, żeby pomóc co jest nieoptymalnego w tym zapytaniu ? Napisałem do autora, ale szybko się odpowiedzi raczej nie spodziewam.

 

 

Dzięki za sugestie!

 

ps: jeżeli ktoś używa tej aplikacji, to będe wdzięczny za info w celu porównania co i jak.

 

 

 

 

logopiwoorgsmall.png

piwo.org - polski portal piwowarski

Opublikowano

Może się komuś przyda, choć to rozwiązanie mało eleganckie

Nie doszedłem po co autor używał zapytania 

 

 2 => array( 'select' => 'cf.*', 'from'   => array( 'collections_fields_user' => 'cf' ), 'where'  => "cf.value_item_id=gl.id", 'type' => 'left'),
        ), 'where' => $where ));

 

 

Na pewno w jakimś celu jest, jednak przy mojej konfiguracji nie doszedłem w jakim celu i na tym etapie jest to wywoływane (to tabela z własnymi polami). Zakometowanie pomogło.

logopiwoorgsmall.png

piwo.org - polski portal piwowarski

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.