Frage zur Performance

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

  • Frage zur Performance

    Hallo zusammen,

    eine kurze Frage: Gibt es einen großen Unterschied in der Performance zw. den folgenden Queries, wenn ich nur z.B. id ID brauche?

    PHP-Code:
    SELECT FROM tabelle 
    oder

    PHP-Code:
    SELECT ID FROM tabelle 
    Wie sieht es aus, wenn ich von den z.B. 20 Spalten 15 brauche... sollte man das dann ebenfalls konkret angeben?

    DANKE!

  • #2
    Hi.

    Grundsätzlich ist es immer besser, nur genau das zu holen, was du auch brauchst. Alles andere sind überflüssige Daten, die aber von DB zu PHP rübergebracht werden müssen. Es gibt also zusätzlichen Traffic.

    Im konkreten Fall kommt es immer darauf an, ob die zusätzliche Daten vernachlässigbar sind, dann kann man mal so faul sein und einfach SELECT * machen. Dazu musst du wissen, wieviele Datensätze denn bestroffen sind und wieviele Felder da unnötigerweise geholt werden. Auch solltest du bedenken, um welche Art von Feldern es sich handelt. Wenn es nur einfach smallint sind, ist die maximal mögliche Größer sicher geringer als wenn du varchar(255) hast.

    Gruß

    Le Cheffe

    Kommentar


    • #3
      Alles klar, danke! Sowas hatte ich mir schon gedacht

      Kommentar


      • #4
        die goldene Regel heisst: so viel wie notwendig, so wenig wie möglich

        Kommentar


        • #5
          Ok, werde ich mir zu Herzen nehmen

          Wie könnte ich diese Regel denn hier anwenden: http://www.php-resource.de/forum/sho...threadid=66193 ?

          Kommentar


          • #6
            1. select * raus, es sei denn du brauchst wirklich aller Spalten von allen selektieren Tabellen, was ich stark bezweifle

            2. komplett mit INNER/LEFT/RIGHT JOIN arbeiten, anstatt FROM tabelle1, tabelle2 ...

            3. Bedingungen möglichst in ON miteinbauen, damit die Menge der zu verknüpfenden Daten reduziert wird

            4. am bestens über das derzeitige Design nach denken, denn es kann so nicht sein

            Kommentar


            • #7
              Vielen Dank für deine Tipps!

              Zu Punkt 4: was gibt es da denn für andere Ansätze?

              Habe folgende Tabellen

              Buchungen
              =======
              Buchungsname
              Startzeit (unix_timestamp)
              Endzeit (unix_timestamp)

              Benutzer
              ======
              Vorname
              Nachname
              blabla

              Einschränkungen
              ===========
              Name der Einschränkung

              Räume
              =====
              Ebene
              Raum

              Einer Buchung können beliebig viele Einschränkungen und Räume zugewiesen werden. Jede Buchung gehört zu einem Benutzer. Gibt es da ein besseres Design als mit n:n Tabellen?

              Kommentar


              • #8
                Nachtrag: Wenn du einen Datensatz abfragst, welcher nur 1 mal vorkommen soll, aber nciht als Primary Key definiert ist, hängst du am besten noch LIMIT 1 an die Abfrage ran...

                Kommentar

                Lädt...
                X