Einzelnen Beitrag anzeigen
  #18  
Alt 02.11.2010, 21:22:59
droehn droehn ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 51
Beiträge: 19
AW: COUNT mit JOINs und sub-queries kriechend langsam

Zitat:
Zitat von thomas_w Beitrag anzeigen
Hast Du schon mal

Code:
$result = mysql_query("SELECT * FROM table1", $link); 
$num_rows = mysql_num_rows($result);
zum Ermitteln der Treffer probiert? Dann entfällt der Vorab-Query mit dem COUNT() komplett und die Blätterfunktion kann problemlos erzeugt werden.
Funktioniert das auch, wenn der SELECT ein LIMIT 0,30 mitschleppt? Wofür nochmal steht '$link' im mysql_query-Statement?
Ich werde es auf jeden Fall gerne probieren, aber erst wenn Deine erstklassigen Tuningtips aufgebraucht sind ;-)

Ich hatte mit dem letzten Index nochmal eine fabelhafte Performancesteigerung und wir liegen mittlerweile bei knapp 3 Sekunden (statt ehemals fast 10) auf meinem Laptop.

Code:
+----+--------------------+-------+--------+------------------------------------------+-------------------------+---------+--------------------------------------------------+-------+--------------------------+
| id | select_type        | table | type   | possible_keys                            | key                     | key_len | ref                                              | rows  | Extra                    |
+----+--------------------+-------+--------+------------------------------------------+-------------------------+---------+--------------------------------------------------+-------+--------------------------+
|  1 | PRIMARY            | p12   | index  | deleted,idx_art_del_sup                  | idx_art_del_sup         | 9       | NULL                                             | 61271 | Using where; Using index |
|  1 | PRIMARY            | t1    | eq_ref | PRIMARY,deleted,idx_id_deleted           | PRIMARY                 | 4       | store_dwh.p12.artikleid                          |     1 | Using where              |
|  1 | PRIMARY            | p11   | ref    | lang,idx_labels_art_lang_del             | idx_labels_art_lang_del | 43      | store_dwh.t1.id,const,const                      |     1 | Using index              |
|  1 | PRIMARY            | r20   | eq_ref | PRIMARY,deleted                          | PRIMARY                 | 4       | store_dwh.p12.supplierid                         |     1 |                          |
|  1 | PRIMARY            | p13   | ref    | supplierid,idx_art_sup_val_del           | idx_art_sup_val_del     | 8       | store_dwh.t1.id,store_dwh.r20.id                 |     1 | Using index              |
|  1 | PRIMARY            | p15   | ref    | idx_art_val_del                          | idx_art_val_del         | 5       | const,store_dwh.t1.id                            |     1 | Using index              |
|  3 | DEPENDENT SUBQUERY | p15b  | ref    | validfrom,idx_art_val_del                | idx_art_val_del         | 5       | store_dwh.t1.deleted,store_dwh.p15.artikleid     |     1 | Using where; Using index |
|  2 | DEPENDENT SUBQUERY | p13b  | ref    | supplierid,validfrom,idx_art_sup_val_del | idx_art_sup_val_del     | 8       | store_dwh.p13.artikleid,store_dwh.p13.supplierid |     1 | Using where; Using index |
+----+--------------------+-------+--------+------------------------------------------+-------------------------+---------+--------------------------------------------------+-------+--------------------------+
8 rows in set (0.00 sec)
Beim nochmalig Drüberschauen glaube ich allerdings, dass hier Ende vom Lied ist; r20 ist nur noch Namen des Lieferanten aus einer sehr viel kleineren Tabelle auslesen - oder hast Du noch einen in der Trickkiste?

Grüsse
David
Mit Zitat antworten