Frage zur Performance

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

  • 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

    Comment


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

      Comment


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

        Comment


        • #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 ?

          Comment


          • #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

            Comment


            • #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?

              Comment


              • #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...

                Comment

                Working...
                X