CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
08.12.2008, 20:47:51
|
Anfänger
|
|
Registriert seit: Dec 2008
Alter: 43
Beiträge: 16
|
|
Tabelle-Sortierung dauert sehr lang
Hallo,
vllt kann jemand mir helfen.
Ich verwalte eine Seite mit über 1Mio Datensätze in einer Tabelle. Tabelle selbst ist auch schon groß(Datenanteil ist fast 400MB).
Auf der Seite sollen die neusten Einträge als erste angezeigt werden, dafür wird jedes Mal vor der Ausgabe die Tabelle sortiert, nach dem Motto : "order by id desc" und das dauert sehr lange (bis 7-10 sec.), falls die Tabelle nicht cachiert ist.
So, vllt kann man diese Sortierung irgendwie vermeinden. ?
Geändert von daudi (08.12.2008 um 20:48:10 Uhr)
|
08.12.2008, 21:37:33
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
|
|
AW: Tabelle-Sortierung dauert sehr lang
Du hast doch hoffentlich einen Index auf der Spalte?
Wenn nein, dann machen.
Bei manchen DBMS funktioniert auch:
Code:
ALTER TABLE tabelle ORDER BY id DESC
Das kann man dann nach dem Einfügen ab und an mal machen.
Z.B. in einem Cronjob
|
08.12.2008, 21:43:11
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: Tabelle-Sortierung dauert sehr lang
tja, das dauert halt vielleicht einfach so lange...wie ist denn das tabellendesign?
|
08.12.2008, 22:40:12
|
Anfänger
|
|
Registriert seit: Dec 2008
Alter: 43
Beiträge: 16
|
|
AW: Tabelle-Sortierung dauert sehr lang
Zitat:
Zitat von DokuLeseHemmung
Du hast doch hoffentlich einen Index auf der Spalte?
Wenn nein, dann machen.
|
Klar, er ist als primary key definiert.
Zitat:
Bei manchen DBMS funktioniert auch:
Code:
ALTER TABLE tabelle ORDER BY id DESC
Das kann man dann nach dem Einfügen ab und an mal machen.
Z.B. in einem Cronjob
|
Das funktioniert aber mal so eine resortierung bei dieser tabelle dauert ja ca 2 min und jedes mal nach dem Einfügen bzw. Löschen eines Eintrages eine solche resortierun durchzuführen ist nicht möglich.
|
08.12.2008, 22:44:11
|
Member
|
|
Registriert seit: Feb 2006
Beiträge: 883
|
|
AW: Tabelle-Sortierung dauert sehr lang
Du zeigst doch keine 1 Mio. Datensätze auf einer Webseite an.....??????
Dann lies doch nur die neuesten aus - mit einer WHERE-Klausel nach Datum oder die x-höchsten ID's
|
08.12.2008, 22:44:55
|
Anfänger
|
|
Registriert seit: Dec 2008
Alter: 43
Beiträge: 16
|
|
AW: Tabelle-Sortierung dauert sehr lang
Zitat:
Zitat von feuervogel
tja, das dauert halt vielleicht einfach so lange...wie ist denn das tabellendesign?
|
Ja das dauert einfach so lange, da die tabelle grade über 1.2 Mio Einträge hat. Deswegen frage ich, ob die andere lösungen gibts.
Das tabellendesign ist wie üblich:
26 Attributen von verschiedenen Typen,
7 Davon sind indiziert als Fulltext und normale Index
Danke für die Antwort
|
08.12.2008, 22:51:26
|
Anfänger
|
|
Registriert seit: Dec 2008
Alter: 43
Beiträge: 16
|
|
AW: Tabelle-Sortierung dauert sehr lang
Zitat:
Zitat von Heinrich
Du zeigst doch keine 1 Mio. Datensätze auf einer Webseite an.....??????
Dann lies doch nur die neuesten aus - mit einer WHERE-Klausel nach Datum oder die x-höchsten ID's
|
Danke für die Antwort.
Ich überlege diese Lösung, aber ich habe ein Pager(einträge sind seitenweise angezeigt) auf der Seite. Es wird nicht trivial.
|
08.12.2008, 23:31:04
|
|
Anfänger
|
|
Registriert seit: Nov 2008
Alter: 35
Beiträge: 106
|
|
AW: Tabelle-Sortierung dauert sehr lang
nimm doch beim select die LIMIT klausel
PHP-Code:
SELECT * FROM tabelle LIMIT 100,30;
dadurch wird ab dem hundertsten datensatz die folgenden 30 datensätze ausgegeben
Geändert von agent47 (08.12.2008 um 23:33:34 Uhr)
|
08.12.2008, 23:41:23
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
|
|
AW: Tabelle-Sortierung dauert sehr lang
Zitat:
nimm doch beim select die LIMIT klausel
|
Gute Idee, hilft nur nix, weil die db trotzdem VORHER alle sortieren muß, um überhaupt zu wissen, welches die ersten 100 sind...
Ich hätte viel lieber das SQL Statement gesehen..
evtl sogar das Ergebnis von EXPLAIN
z.B.
Code:
EXPLAIN SELECT *
FROM tabelle
ORDER BY id DESC
LIMIT 100,30
Ein implizieter Join kann heftig Schaden anrichten (Zeit fressen).
Geändert von DokuLeseHemmung (08.12.2008 um 23:45:19 Uhr)
|
09.12.2008, 07:22:51
|
Junior Member
|
|
Registriert seit: Oct 2008
Alter: 47
Beiträge: 274
|
|
AW: Tabelle-Sortierung dauert sehr lang
Zeig mal bitte dein komplettes Tabellen-Schema und die vollständige Query - plus die Ausgabe von letzterem, wie von DokuLeseHemmung schon gesagt, mit EXPLAIN.
Ist das so schwer?
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:17:11 Uhr.
|