Performance Frage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Performance Frage

    Hallo,

    Ich habe eine Tabelle mit folgender Struktur:

    id(Int,5) | bereich(Int,3) | name(varchar,255) | text(text)

    Es gibt 50.000 Einträge.
    1.000 Davon haben für Bereich den Wert 1

    Nun mach ich folgendes:

    PHP-Code:
    "SELECT * FROM tabelle WHERE bereich=1 AND name=langer_string" 
    Die Performance ist ziemlich schlecht.

    Kann es sein, dass bei dieser Abfrage alle Einträge sowohl nach einer Übereinstimmung mit "bereich" als auch mit "name" überprüft werden? (und nicht erst nach "bereich" gesucht wird, und die gefundenen 1000 Einträge dann nach dem "bereich")..

    Wie kann ich die Performance steigern? Nach einer eindeutigen ID kann ich in diesem Fall leider nicht suchen lassen.

    Gruß,
    Syco
    [COLOR=darkblue].: 1+1=23 :.[/COLOR]

  • #2
    einen gemeinsamen Index auf bereich und name legen

    alter table tabelle
    add index (bereich,name);
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Stößt so ein Index irgendwann an seine Grenzen? Ich habe das Script jetzt so umgearbeitet, dass es auch mit einer ID-Angabe arbeiten könnte. (nur müsste ich dazu erst mal die Tabelle leeren..)In dieser Form soll es ja kaum eine Rolle spielen, wieviele Einträge die DB hat.

      Was, wenn ich deinen Vorschlag aufgreife und irgendwann bei ca. 200.000 Einträgen bin?

      btw: Die DB-Abfrage nahm bisher jeweils ca. eine Sekunde in Anspruch.
      [COLOR=darkblue].: 1+1=23 :.[/COLOR]

      Kommentar


      • #4
        Bei einem OINDEX ist nicht die Abfrage das Problem. Ab X Datensätzen wird das Schreiben in der Tabelle Sche*** langsam!
        h.a.n.d.
        Schmalle

        http://impressed.by
        http://blog.schmalenberger.it



        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
        ... nur ohne :-)

        Kommentar


        • #5
          Das funzt ja Prima.

          Durch den Index hat sich die Ausführzeit der Inserts um ca. 1/3 erhöht - bei momentan 25.832 Zeilen. Wird das noch ärger? Mit bis zu einer Verdreifachung könnte ich leben...

          EDIT:
          Gar nicht wahr. Die Ausfürhzeit hat ist gleich geblieben. Die höhere Ausführzeit beim letzen Insert lag am Datensatz.
          Zuletzt geändert von syco23; 16.07.2004, 10:02.
          [COLOR=darkblue].: 1+1=23 :.[/COLOR]

          Kommentar

          Lädt...
          X