SQL - kurze frage

  • was is sinnvoller (in Sachen Ressurcen, Ladezeiten usw):


    - eine SQL Abfrage senden, die im foreach erst erstellt wird, auch wenn diese dann etwas länger ausfällt
    Bsp: SELECT a,b,c FROM table WHERE xy IN ('q', 'w', 'e', 'r', 't', 'z', 'u', 'i', 'o', 'p', ...ect ect )


    oder


    - in foreach Schleife jede SQL Abfrage einzeln Abschicken


    ?

  • Ja ersteres, ich bezweifele auch ein wenig ob die SQL Abfrage innerhalb deines foreach überhaupt so korrekt funktionieren kann. Hab ich auch noch nie so gesehen.

  • Bin auch für ersteres.
    Weil bei letzterem muss ja X-mail eine Verbindung mit dem MySQL-Server hergestellt werden (eine query übergeben). Also ich bin mir sehr sicher, dass eine umfangreichere SQLabfrage schneller verläuft, als 20 kleine.
    :)

  • Zur Arbeit mit SQL kann ich nur folgendes sagen: Man übergibt eine Query. Mehr gibts da nich xD
    Aber damit habe ich sicherlich deine Frage nicht (komplett) beantwortet. :(


    --> Kannst du dich bitte ein wenig Präziser ausdrücken?

  • naja, als ich vor paar tagen per SQL auf "neuland" gestoßen bin, wusste ich zb nicht,
    ob es besser ist eine oder mehrere aufeinander folgende abfragen zu schicken.
    dachte mir, dass evtl der SQL server bei einem query von rund 100 abfragen at once in die knie gehen würde/könnte.


    Auch hab ich schon gelesen, dass man nie alles auswählen soll (SELECT * ...)


    so einfache sachen meine ich halt.
    (man ey schreiben mit netbook ist krampf!)

  • Nunja. SELECT * soll wirklich nicht so toll sein. Man sollte lieber angeben: `id` `name`... anstatt *
    Aber diese Geschwindigkeitsbremse macht sich glaube ich erst bemerkbar, wenn 1000Leute und mehr auf der Webseite surfen und fleißig MySQL-anwendungen nutzen.

  • Es kommt immer darauf an wofür man SELECT * gerade braucht.
    Im normalen Betrieb einer Seite, kommt dies allerdings sogut wie nie zustande.


    Und ja, lieber eine Abfrage schreiben, welche vernünftig die Daten herausgibt welche man benötigt, als zu viele Male den Server anzusprechen.

  • bleibt wohl doch nicht bei ner kurzen Frage, wie der Titel sagt :D...


    Habe ein Problem mit SQL bei SUM
    die SQL Abfrage:


    PHP
    $sql = "SELECT SUM(".$wpn_var.") AS wpn_var_sum FROM average_".$table." WHERE ply_".$game." != '' AND ".$wpn."_kills >= 60";


    Ich hab das Ganze mal mit schreiben lassen um zu sehen, wie lange es dauert Teile des Scripts abzuarbeiten.
    Ein Ausschnitt:

    Zitat


    Wed 19 Sep 2012 - 11:42:14
    --- caACR_shots
    Wed 19 Sep 2012 - 11:42:18
    --- caACR_hits


    4 Sekunden für eine Summe/Spalte. Klar, es sind viele Einträge (182083 in einer der Tabellen zB),
    aber ist das normal oder kann ich da noch was beschleunigen?


    Bei der SQL Abfrage erstelle ich im Moment noch keine "komplette" quey, da es ziehmlich lang werden könnte.
    Bin mir gerade nicht sicher, ob ich da auch umstellen sollte auf die oben genannte 2. Lösung.


    Hier die Schleife. Vlt stecken ja dort die 4 Sekunden drin =/

  • Hm ich erkenne nichts sonderbares, allerdings sind gefühlsmäßig 4 sek. doch etwas lang?! Andererseits ist es bei größeren Datensätzen normal, dass es länger dauert.


    Ich frage mal nicht, welche Hardware du hast, weil bei dieser Schleife darf es aufkeinstenfall an einer zu langsamen Hardware liegen.


    Ich würde versuchen anstatt 3 foreach zu nehmen, es umzuprogrammieren auf 2.. nur um zu testen ob es daran liegt.

  • Wie soll ich n ein foreach wegnehmen? ;D
    Dann ginge es schneller, aber nur weil eben weniger daten abgefragt werden ;D


    Ich hab überlegt wie ich die query sammle.
    Bei einem INSERT INTO ist es mir ja klar:


    Aber wie bekomme ich die SELECT gesammelt?
    Mein "Kopf-Problem" liegt da momentan bei AS wpn_var_sum
    Bei einem foreach würde ich ja immer wieder wpn_var_sum überschreiben. 8|

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!