php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #16 (permalink)  
Alt 27-11-2007, 19:36
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von tomtherock
ja klar glaub dir da schon hab ja jetzt auch mal im Internet bissal
gestöbert...stimmt schon rand() ist nicht so dolle nur warum MYSQL dann
so ne BETA Funktion drin hat frag ich mich halt bzw einfach unausgereift..
Wozu poste ich überhaupt?
Zitat:
Original geschrieben von ghostgambler
Man kann RAND() ja nicht nur in Verbindung mit ORDER BY benutzen.
Zitat:
Hab jetzt eigentlich super Ergebnisse mit folgendem gemacht:

einfach query ohne LIMIT und rand()
alle per while/for in array schreiben

mit count einfach max für rand() berechnen und dann so
id_artikel[$key] einfach ansprechen so is der QUERY superschnell und
der Compiler hat auch bissal was zu tun.

hab ein paar scripte überarbeitet und zeigt schon die ersten erfolge weil
ich viele Temp Tabellen dadurch vermeide vorallem auch mit EXISTS anstatt mit JOINS
Du machst jetzt nicht ernsthaft einen Query allá
PHP-Code:
SELECT t1.id_artikel,t3.titel,t4.bildpfad,t2.id_verwendung
FROM s_happyhour 
as t1 
INNER JOIN s_zuweisung 
as t2 ON t1.id_artikel t2.id_artikel 
INNER JOIN s_artikel 
as t3 ON t1.id_artikel t3.id_artikel
INNER JOIN s_bild 
as t4 ON t1.id_artikel t4.id_artikel 
WHERE t1
.uhrzeit 13 
AND aktiv 
AND aktiv_gr 
AND t2.id_verwendung 
und lädst das ganze in ein Array?!
Mit Zitat antworten
  #17 (permalink)  
Alt 28-11-2007, 09:38
tomtherock
 Registrierter Benutzer
Links : Onlinestatus : tomtherock ist offline
Registriert seit: Jun 2002
Ort: München
Beiträge: 334
tomtherock ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja mache ich weil ich auch dein Beispiel ausgetestet hab, und da ich ja
mein DB Server entlasten will ist bei dir folgendes nötig:

UPDATE: set = rand() ==> Betroffene Datensätze: 1595 (die Abfrage dauerte 0.0074 sek.)
SELECT: ORDER BY rand LIMIT 1 ==> (1 insgesamt, die Abfrage dauerte 0.0010 sek.)
UPDATE: SET rand = NULL WHER ID = blabla ==> (die Abfrage dauerte 0.0004 sek.)

Ich benötige lediglich ein Abfrage die den DB belastet:
SELECT: ==> (die Abfrage dauerte 0.0004 sek.)

Der weg über UPDATE -> SELECT -> UPDATE dauert im Vergleich insgesamt:
0.0088 Sek ==> zu 0.0004 sek natürlich braucht der Compiler für die Schleifen doch spätestens wenn ich den DB und Webserver teile kommt
mir dieses System doch zugute!
Mit Zitat antworten
  #18 (permalink)  
Alt 28-11-2007, 11:23
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Wenn du aber die ganze Tabelle in PHP ausließt hast du dort ein Riesenarray liegen. Du verlagerst den Aufwand also teilweise auf PHP, das Auslesen der Datensätze kostet MySQL aber auch einen Haufen sinnlos-Aufwand. Im schlimmsten Fall packst du dir damit sogar dein PHP memory_limit voll!

Wäre es nicht auch eine Lösung, wenn du dieses rand-Feld einmal am Tag oder so berechnest und anschließend nach dem Auslesen des aktuellen Datensatzes dessen rand-Wert hoch setzt?
Mit Zitat antworten
  #19 (permalink)  
Alt 28-11-2007, 12:22
tomtherock
 Registrierter Benutzer
Links : Onlinestatus : tomtherock ist offline
Registriert seit: Jun 2002
Ort: München
Beiträge: 334
tomtherock ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja klar könnte ich schon machen nur ich seh es nicht ein für ne RANDOM funktion nen Conjob laufen zu lassen...zudem is das Array wieder mit unset() danach zu löschen und so den speicher frei zusammen.

Hab das ganze getestet der Compiler mit dem array rand ist 70% schneller in der script ausgabe + mysql perfomance ersparnis!

mit UPDATE RAND usw... brauch ich mehr MySQl und scriptausgabe ist
länger weil der Apache auf den MYsql länger warten muss.


Zudem ist später mal ein Webserver aufrüsten wesentlich kostengünstiger
als ein DB-Server mit nem teuren RAID mit raptor Platten.

Geändert von tomtherock (28-11-2007 um 12:25 Uhr)
Mit Zitat antworten
  #20 (permalink)  
Alt 28-11-2007, 19:44
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

1. Ein Webserver braucht den RAM definitiv anders, als sinnlos eine komplette Tabelle in den Ram zu schieben.
Sobald Web- und Datenbankserver getrennt sind, muss die komplette Tabelle bei jedem dieser Queries über das Netzwerk geschoben werden.
Möchtest du dir mal ausrechnen wie viele Prozesse gleichzeitig laufen können, wenn man von einer (durchaus realistischen) Größe von 100 MB für die Tabelle ausgeht? Da geht schneller das Netzwerk zugrunde, als jeglicher RAM, und wenn du dann 3 Netzwerkkarten hast, damit du mit der Bandbreite hinkommst, fängt dein Webserver an zu swappen... ob unset oder nicht.
2. Der Datenbank-Server braucht für die 3 Queries praktisch gar keine weiteren Ressourcen. Das Aufwändigste ist der große UPDATE-Query, das ist in der Tat etwas unhübsch, der SELECT und das UPDATE mit ID=XYZ sind hingegen super-simple Queries (ein Index auf die rand-Spalte hilft).

Alternativ könnte man sich den großen UPDATE-Query sparen (bzw. ein einziges Mal fahren), und danach bei neuen Datensätzen, oder Datensätzen die ausgewählt werden, ein UPDATE Tabelle SET rand = RAND() WHERE id = XYZ; machen.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:50 Uhr.