[MySQL 4.0] Index-Effizienz...

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [MySQL 4.0] Index-Effizienz...

    Tag,

    ich habe ein Tabelle, die Besucheraktivitäten einer Website erfassen soll. Ein Aufruf einer Website korrespondiert zu einer Zeile in dieser Tabelle, die wie folgt definiert ist:

    PHP Code:
    +---------+------------------+------+-----+---------+-------+
    Field   Type             Null Key | Default | Extra |
    +---------+------------------+------+-----+---------+-------+
    bereich varchar(100)     |      |     |         |       |
    ip      varchar(15)      |      |     |         |       |
    zeit    int(10unsigned |      |     | 0       |       |
    browser tinytext         YES  |     | NULL    |       |
    notiz   text             YES  |     | NULL    |       |
    sprache enum('de','en')  |      |     | de      |       |
    +---------+------------------+------+-----+---------+-------+ 
    Wie man sieht verwendet diese Tabelle aber keinerlei Indizes. Ich weiß, dass die Ergebnisse dieser Tabelle etwa jeden Monat von einem PHP-Skript abgerufen und in grafische Statistiken etc. umgewandelt werden, ansonsten würden die Schreibaufträge durch die Aufrufe der Webseite die hauptsächliche Benutzung der Tabelle darstellen.

    Ich hab deswegen neulich mit nem Kumpel diskutiert, dass es in so einem Fall doch besser wäre die 2,3 sec Abrufzeit der Daten bei der Statistikauswertung in Kauf zu nehmen als die gesamte Website zu verlangsamen, weil wegen Indizes ein neuer Eintrag in die Tabelle mehr Zeit in Anspruch nimmt.

    Gibt es vielleicht einen Kompromiß, wie man die Abfrage bei der Auswertung mit Indizes beschleunigen kann ohne den Aufwand beim Erweitern des Index bei einem neuen INSERT explodieren zu lassen?

  • #2
    also bei Tabellen in die oft geschrieben wird und eher selten gelesen, mache ich es meist so dass ich den Index bei Bedarf setze und nach der Auswertung dann wieder lösche, als das Auswertungsscript macht es halt.
    Wenn die Tabellen groß werden lohnt es sich den Index dynamisch zu erstellen weil die Auswertung dann schön schnell geht.
    [Test] MySQL cli Emulator

    Comment


    • #3
      Den Index über 15.000 Einträge zu erstellen kostet dann sicherlich bei der Auswertung noch mehr Zeit...

      Comment


      • #4
        probieren?
        Wenn ich in den Statistik Bereich komme lasse ich den Index erstellen und dann werten einige Scripte bestimmte Infos aus, die Cache ich dann, und dann beim verlassen entferne ich den Index dann wieder.
        Für mich war es die beste Lösung weil dei INSERTs usw. einfach wesentlich schneller sind
        [Test] MySQL cli Emulator

        Comment


        • #5
          Ich will ja den Abruf der Statistiken ja auch ein wenig beschleunigen. Das ginge imho nur mit Indizes.
          Diese aber erst zu erstellen, kostet noch mehr Zeit, die ich auf die Statistiken...

          Comment


          • #6
            ja, wie oft muß die Statistik angezeigt und wieoft wird etwas eingetragen?

            Das mußt Du einfach vergleichen und dann eine Lösung finden.
            [Test] MySQL cli Emulator

            Comment


            • #7
              Steht beides in dem thread-eröffnenden Post....

              Comment

              Working...
              X