Heim > Backend-Entwicklung > PHP-Tutorial > Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?

Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?

WBOY
Freigeben: 2016-08-04 09:22:22
Original
927 Leute haben es durchsucht

Angenommene Optimierungsmethode:

  1. Grenzoptimierung: Nehmen Sie zuerst die dem Paging entsprechende ID heraus, basieren Sie dann auf dem Feldwert und begrenzen Sie dann

  2. Index

  3. Myisam-Engine

Angehängter Code:
Gesamtzahl der Abfragedaten:

Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?

Das Bild unten zeigt die ID, die dem Abfrage-Paging entspricht:

Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?

Das Bild unten zeigt das Abfrageergebnis:

Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?

---------------Aktualisiert am 06.07.2016 17:47-----------------
Gefällt mir Orte, die es eigentlich nicht brauchen sollten, haben sich bereits damit befasst, und die Dinge, die nicht gebraucht werden sollten, werden nicht mehr gebraucht. Das Codediagramm wurde ebenfalls aktualisiert. Jetzt kann die Reaktion unter 2,5 Sekunden

gehalten werden

Der Ausführungsplan lautet wie folgt: Dies ist die erste Anweisung, Die Gesamtmenge der Abfragedaten

<code>SELECT `r`.`id` FROM (`samplerecord` as r) LEFT JOIN `statementsample` as s ON `r`.`sample_id`=`s`.`id` LEFT JOIN `breed` as b ON `s`.`food_id`=`b`.`id` LEFT JOIN `user` as u ON `r`.`user_id`=`u`.`id` WHERE `s`.`code` != ''</code>
Nach dem Login kopieren
Nach dem Login kopieren

Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?
Die zweite Anweisung Fragen Sie die erste Feld-ID des Pagings ab

<code>SELECT `r`.`id` as id FROM (`samplerecord` as r) LEFT JOIN `statementsample` as s ON `r`.`sample_id`=`s`.`id` LEFT JOIN `breed` as b ON `s`.`food_id`=`b`.`id` LEFT JOIN `user` as u ON `r`.`user_id`=`u`.`id` WHERE `s`.`code` != '' ORDER BY `id` DESC LIMIT 1 OFFSET 5988</code>
Nach dem Login kopieren
Nach dem Login kopieren

Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?

Die dritte Aussage: Datenergebnissatz abfragen

<code>SELECT `r`.`id` as id, `s`.`code` as code, `b`.`breed_name`, `r`.`state`, `u`.`username`, `r`.`recordtime`, `r`.`remark` FROM (`samplerecord` as r) LEFT JOIN `statementsample` as s ON `r`.`sample_id`=`s`.`id` LEFT JOIN `breed` as b ON `s`.`food_id`=`b`.`id` LEFT JOIN `user` as u ON `r`.`user_id`=`u`.`id` WHERE `s`.`code` != '' AND `r`.`id` < '109541' ORDER BY `id` DESC LIMIT 12</code>
Nach dem Login kopieren
Nach dem Login kopieren

Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?

Bitte helfen Sie mir bei der Analyse...

Antwortinhalt:

Angenommene Optimierungsmethode:

  1. Grenzoptimierung: Nehmen Sie zuerst die dem Paging entsprechende ID heraus, basieren Sie dann auf dem Feldwert und begrenzen Sie dann

  2. Index

  3. Myisam-Engine

Angehängter Code:
Gesamtzahl der Abfragedaten:

Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?

Das Bild unten zeigt die ID, die dem Abfrage-Paging entspricht:

Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?

Das Bild unten ist das Abfrageergebnis:

Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?

---------------Aktualisiert am 06.07.2016 17:47-----------------
Gefällt mir Orte, die es eigentlich nicht brauchen sollten, haben sich bereits damit befasst, und die Dinge, die nicht gebraucht werden sollten, werden nicht mehr gebraucht. Das Codediagramm wurde ebenfalls aktualisiert. Jetzt kann die Reaktion unter 2,5 Sekunden

gehalten werden

Der Ausführungsplan lautet wie folgt: Dies ist die erste Anweisung, Die Gesamtmenge der Abfragedaten

<code>SELECT `r`.`id` FROM (`samplerecord` as r) LEFT JOIN `statementsample` as s ON `r`.`sample_id`=`s`.`id` LEFT JOIN `breed` as b ON `s`.`food_id`=`b`.`id` LEFT JOIN `user` as u ON `r`.`user_id`=`u`.`id` WHERE `s`.`code` != ''</code>
Nach dem Login kopieren
Nach dem Login kopieren

Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?
Zweite Anweisung Fragen Sie die erste Feld-ID des Pagings ab

<code>SELECT `r`.`id` as id FROM (`samplerecord` as r) LEFT JOIN `statementsample` as s ON `r`.`sample_id`=`s`.`id` LEFT JOIN `breed` as b ON `s`.`food_id`=`b`.`id` LEFT JOIN `user` as u ON `r`.`user_id`=`u`.`id` WHERE `s`.`code` != '' ORDER BY `id` DESC LIMIT 1 OFFSET 5988</code>
Nach dem Login kopieren
Nach dem Login kopieren

Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?

Die dritte Aussage: Datenergebnissatz abfragen

<code>SELECT `r`.`id` as id, `s`.`code` as code, `b`.`breed_name`, `r`.`state`, `u`.`username`, `r`.`recordtime`, `r`.`remark` FROM (`samplerecord` as r) LEFT JOIN `statementsample` as s ON `r`.`sample_id`=`s`.`id` LEFT JOIN `breed` as b ON `s`.`food_id`=`b`.`id` LEFT JOIN `user` as u ON `r`.`user_id`=`u`.`id` WHERE `s`.`code` != '' AND `r`.`id` < '109541' ORDER BY `id` DESC LIMIT 12</code>
Nach dem Login kopieren
Nach dem Login kopieren

Mysql 8000-Paging klickt auf jede Seite und die Antwort wird zwischen 3 und 4 Sekunden gesteuert. Wie kann ich die Optimierung fortsetzen?

Bitte helfen Sie mir bei der Analyse...

Können Sie den SQL- und Ausführungsplan veröffentlichen?

Durch die Ausführung einer Transaktion wird die Effizienz verbessert

1. Teilen Sie die Tabellenverbindungsabfrage zunächst in einfache Abfragen auf
2.

Ein vorläufiger Blick auf 3 SQL:

1. Die Gesamtmenge an SQL, Samplerecord, verwendet keinen Index und der vollständige Tabellenscan wird zwangsläufig langsamer sein
2. Fragen Sie die ID-SQL ab und sortieren Sie die gesamte Tabelle, was voraussichtlich langsam ist
3. Das letzte sollte nicht schlecht sein

Der springende Punkt ist also, einen vollständigen Tabellenscan zu vermeiden. Wenn Sie wirklich die vollständigen Tabellendaten benötigen, ist das Limit nicht zu langsam.
Die letzte Vermutung ist, dass die Bedingung code!='' in hohem Maße filterbar ist, das heißt, es gibt viele solcher Bedingungen, was zu einer langsameren Filterung führt. Versuchen Sie, einen Index hinzuzufügen.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage