just another MySQL Thread | select * from … | Queries optimieren, Stilfrage

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von sevY, 20.01.2004.

Wie selektierst du bei einer einfach strukturierten MySQL Datenbank wenige Variablen?

  1. a) select from * (Ich selektiere alles, auch wenn ich nur 3 Vars brauche)

    1 Stimme(n)
    16,7%
  2. b) select from var1,var2,var3 (Ich selektiere trotz der Einfachheit der DB aus Prinzip nur das was

    5 Stimme(n)
    83,3%
  1. sevY

    sevY Thread Starter Gast

    just another MySQL Thread | select * from … | Queries optimieren, Stilfrage…

    Hi zusammen, ich wollte einfach mal fragen wie ihr folgendes handhabt.


    Ein Table mit durchschnittlich 12 Variablen, max. ca. 10 Rows. Für MySQL also ein Witz was die Querytime angeht :D. Trotzdem nun meine Frage:

    Ihr benötigt aus diesem Table von den 12 Variablen bei eurer Abfrage nur 4 Variablen.

    Was macht ihr?

    a) mysql_query("select * from …

    Also alles auswählen…

    b) mysql_query("select var1,var2,var3,var4 from …

    Ausschließlich die Variablen die ihr benötigt selektieren.


    Für a) spricht, das bei dieser „winzigen“ Datenbankstruktur praktisch keine Nachteil entstehen, alles zu selektieren. Außerdem ist es einfacher und bei ca. 8 selektierten Variablen auch übersichtlicher, diese durch * zu ersetzen.

    Für b) spricht meines Erachtens nur die Tatsache, das es „korrekter“ ist, nur das zu selecten was man braucht.

    Nachdem ich etliche Vorträge über korrektes ER-Design von DBs und sauberen PHP-Code (hier ein Leerzeichen, da keins, hier einrücken, da nicht…) gehört habe, möchte ich mir von vornherein einen sauberen Stil angewöhnen.


    Ist nun a) völlig ok oder doch b) die sauberste Lösung bzw. relevant für einen guten PHP Stil?


    Yves
     
  2. minimal

    minimal MacUser Mitglied

    Beiträge:
    558
    Zustimmungen:
    3
    Registriert seit:
    22.12.2003
    grundsätzlich gilt, projektionen und selektionen immer so weit wie möglich in die joins ziehen. dadruch werden die zwischen ergebnisse der joins kleiner und die db rödelt dementsprechend weniger. nun stell die mal das kartesische produkt von spalte1 x spalte2 x spalte3 x ... vor. das zwischen ergebnis wird riesig sein. das auch schon bei kleinen mengen. machst du nun tablelle a x tabelle b und du machst select *, bildest du nen kartesiches produkt über jede möglichen kombinationen. sowas ist unfug.

    also überleg nochmal ;)
     
  3. sevY

    sevY Thread Starter Gast

     

    Hi,

    bedeutet das, select * zu nehmen ist in jedem Fall Unfug solange nicht auch alles benötigt wird?

    Bei der Abfrage eines(!) einzelnen Tables wird meines Wissens nach doch ein kartesisches Produkt aus xVarname und yRowContentzuX gebildet.
    Die kartesischen Produkte der nicht genutzen, gebildeten Arrays sind hier irrelevant aber durchaus nicht unsinnig im eigentlichen Sinne.

    //offtopic… ich wusste gar nicht, das du neben cooler Musik auch was mit DBs zu tun hast :)

    Yves
     
  4. lemonstre

    lemonstre MacUser Mitglied

    Beiträge:
    1.824
    Zustimmungen:
    92
    Registriert seit:
    12.03.2003
    infos allgemein zum thema optimieren von mysql abfragen:

    http://www.mysql.de/doc/de/MySQL_Optimisation.html

    ob ein selecct * in deinem fall performance nachteile oder vorteile gegenüber einem expliziten ansprechen der einzelnen spalten bringt lässt sich schwer sagen und dürfte eher akademisch sein. ändert sich denn der inhalt der tabelle bei jeder abfrage, oder greift hier möglicherweise eh der cache?

    gruss
    lemonstre
     
    Zuletzt von einem Moderator bearbeitet: 24.10.2015
  5. minimal

    minimal MacUser Mitglied

    Beiträge:
    558
    Zustimmungen:
    3
    Registriert seit:
    22.12.2003
    wenn du kein join machst also nur eine tabelle hast ist das killefit. aber sobald du was machst wie, select * from a, b .... wirds kritisch und kann auf lang oder kurz die kosten der db durch unnötig vielen datenbank zugriffen erhöhen und natürlich die performance senken.

    ich studiere ja noch informatik ;)
     
  6. sevY

    sevY Thread Starter Gast

    wunderbar :) danke für die infos. ich denke das ich mir es angewöhne, direkt nur das zu selecten, was benötigt wird.


    yves
     
  7. lemonstre

    lemonstre MacUser Mitglied

    Beiträge:
    1.824
    Zustimmungen:
    92
    Registriert seit:
    12.03.2003
    genau, * is evil ;)
     
Die Seite wird geladen...

Diese Seite empfehlen