Bastler: (PHP) Allgemeine frage zu MySQL Datenbanken und Indexe

Hallo,

Ich hab INZWISCHEN ne sehr große datenbank deren Performace zu schwinden scheint.

damals habe ich die dtanebank noch so programmiert dass ich einen select all auf die datenbank mache und die suchkriterien per PHP abarbeite.

jetzt weiss ich das dass keinen sinn macht und ärgere mich das ich wahrscheinlich nun das ganze system umbauen darf damit die Performance wieder wie am anfang ist.

jetzt meine frage: bringen indexe nur im zusammenhang mit der richtigen abfrage was oder bringen sie allgemein bessere performance.

Beispiel 1:
Select * From $table -> alles weitere macht das PHP script

Beispiel 2:
Select * From $table where dies und das

wenn ich nun auf die wichtigsten spalten einen index lege dann bleibt doch die suchdauer im beispiel 1 gleich und im beispiel 2 verbessert sie sich, ist das richtig?

MfG Bastler

  1. Hi,

    damals habe ich die dtanebank noch so programmiert dass ich einen select all auf die datenbank mache und die suchkriterien per PHP abarbeite.

    gerade das sind die Aufgaben von SQL.

    jetzt meine frage: bringen indexe nur im zusammenhang mit der richtigen abfrage was

    Ja. Sie enthalten keine Magie.

    Select *

    SELECT * ist außer für Testzwecke zu vermeiden. Gib genau die Spalten an, die Du selektieren möchtest.

    From $table -> alles weitere macht das PHP script

    Keine Einschränkung der Datenmenge => FULL TABLE SCAN (und Übertragung *aller* Daten).

    Select [Spalten] From $table where dies und das

    Günstiger Index auf dies, das ist sinnvoll.

    wenn ich nun auf die wichtigsten spalten einen index lege

    Nicht die wichtigsten. Die, die bei der Abfrage am schnellsten am meisten einschränken.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. hi,

    jetzt meine frage: bringen indexe nur im zusammenhang mit der richtigen abfrage was oder bringen sie allgemein bessere performance.

    optimal ist es, wenn du genau weißt, nach was( welche felder oder tabellen) am meisten gesucht wird, dort legst du die indexe hin. aber denk dran, wenn du viele änderungen,delete ,etc vorgänge hast, dann werden diese durch indexwerte verlangsamt, da die indexe ja dann neu geordnet werden müssen. wenn du aber immer wieder in der gleichen spalte suchst, dann laß sie weg, da durch zuviele festplattenzugriffe der vorteil der indexierung leicht verloren geht.
    ein index funktioniert auch auf keinen fall mit textfeldern und NULL werte zulassende felder

    Beispiel 1:
    Select * From $table -> alles weitere macht das PHP script

    müll

    Beispiel 2:
    Select * From $table where dies und das

    so schon eher, bei OR abfragen muss auch der gesamte index durchlaufen werden, also indexvorteil ist verloren

    wenn ich nun auf die wichtigsten spalten einen index lege dann bleibt doch die suchdauer im beispiel 1 gleich und im beispiel 2 verbessert sie sich, ist das richtig?

    naja, so ähnlich, gibts viel zu bachten, siehe oben
    ciao
    ronny