php-resource



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

Login

 
eingeloggt bleiben || php-forumjetzt anmelden
 

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
  #1 (permalink)  
Alt 07-04-2005, 14:12
jogisarge
 Registrierter Benutzer
Links : Onlinestatus : jogisarge ist offline
Registriert seit: Nov 2002
Beiträge: 430
jogisarge ist zur Zeit noch ein unbeschriebenes Blatt
Standard grundsätzliche Frage zu mysql-Abfrage

Hallo zusammen !

Datenbank A und B liegen auf dem gleichen Server.
Ich mache jetzt eine Abfrage auf A und erhalte 50 Datensätze.

Diese 50 Datensätze durchlaufe ich in einer Schleife und prüfe ein Statusfeld.
Ist in dem Statusfeld eine 1 so mache ich ein Select auf Datenbank B.

Das Ganze funktioniert auch, ist aber beim ersten MAl etwas langsam.
Führt man das mehrmals hintereinander, so ist die Geschwindigkeit akzeptabel.

Meine Frage :
Ist es besser, die Schleife zu durchlaufen, und jeden Datensatz in einem eigenen Select-Statemant zu holen,
oder sollte ich nach der Statusprüfung ein Feld zusammenbauen, das die where-Bedingung für ein Select-Statemant enthält.

Was ist schneller (merkbar schneller)?
PHP-Code:
select id from tab1 where id 1
select id from tab1 where id 
2
select id from tab1 where id 
3
select id from tab1 where id 
4
select id from tab1 where id 

oder
PHP-Code:
select id from tab1 where id OR id=OR id=OR id=OR id=
Ich hoffe ich konnte mich verständlich ausdrücken.

gruss
jogi

p.s.
Bevor jetzt jemand schreibt,ich solle das probieren.
Ich muss dann sehr viel ändern, desshalb wollte ich erstmal nur wissen, ob jemand damit schon seine Erfahrungen gemacht hat.
Mit Zitat antworten
  #2 (permalink)  
Alt 07-04-2005, 14:17
Shurakai
 Master
Links : Onlinestatus : Shurakai ist offline
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.084
Shurakai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi

Ich würde 2. nehmen. Allerdings würde ich nicht alles mit ORs verknüpfen, sondern IN() benutzen.
Mit Zitat antworten
  #3 (permalink)  
Alt 07-04-2005, 14:23
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.136
Quetschi wird schon bald berühmt werden
Standard

Hallo,

wie bereits gesagt wurde: Lösung 2 ist die bessere jedoch mit IN()

Allerdings sollte auch die erste Lösung bei 50 Datensätzen nicht merklich langsamer sein, hast du den nen Index auf der Spalte id??
Mit Zitat antworten
  #4 (permalink)  
Alt 07-04-2005, 14:26
jogisarge
 Registrierter Benutzer
Links : Onlinestatus : jogisarge ist offline
Registriert seit: Nov 2002
Beiträge: 430
jogisarge ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja, index ist auf spalte id.

Ich denke ja, dass es damit zusammenhängt, dass ich ja auf eine andere Datenbank gehe.

Die Datenbanke liegen zwar auf dem gleichen Server, sind aber zwei verschieden Datenbanken.

Vielleicht liegt es daran ?
Mit Zitat antworten
  #5 (permalink)  
Alt 07-04-2005, 14:37
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.136
Quetschi wird schon bald berühmt werden
Standard

Hmmm, ich nehme ja an dass du da vorhin nur Beispiel-Querys gepostet hast... sind die Datensätze in deinen 'Original'-Abfragen geliefert werden vielleicht sehr groß??

Aber wie gesagt, pack das ganze in einen einzigen Query und es sollte flutschen

mal als Beispiel:
PHP-Code:
while($row mysql_fetch_array($result,MYSQL_ASSOC))
{
    
$id[] = $row["id"];
}
$in implode(",",$id);

$query "select id from tab1 where id IN ($in)"
Mit Zitat antworten
  #6 (permalink)  
Alt 07-04-2005, 15:06
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

warum nicht eine JOIN-Abfrage erstellen und die Daten direkt aus DB B raus holen? Etwa so:

select ... from dba.tbla a inner/left/right join dbb.tblb b on a.id=b.id ...

ist auf jeden Fall besser als 'ne Schleife
Mit Zitat antworten
  #7 (permalink)  
Alt 07-04-2005, 15:17
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.136
Quetschi wird schon bald berühmt werden
Standard

Wäre natürlich die Premium-Lösung, ganz klar. Geht halt nur wenn er mit einer Kennung auf beide DB's kann.

Hatte ja vor kurzem ein ähnliches Problem, ich kann halt nicht mit einer Kennung auf beide DB's und daher bin ich jetzt irgendwie hier auch davon ausgegangen....
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

OnPremise versus Cloud - das richtige System finden
Wir beleuchten in diesem Artikel, die Vor- und Nachteile für Cloud oder OnPremise Systemen. Und warum es definitiv Zeit wird in die Cloud zu wechseln.

09.05.2022 | julia_mjr

Warum Texterstellung mit künstlicher Intelligenz richtig gut ist
Warum Texterstellung mit künstlicher Intelligenz richtig gut istKünstliche Intelligenz ist dabei, die Welt zu erobern. Die größten Unternehmen entwickeln Systeme, die einen Text für Sie schreiben können. Und sie machen das sehr gut.

05.01.2022 | Berni


 

Aktuelle PHP Scripte

MyPHPlib-Bibliotheksverwaltung

MyPHPlib ist eine Scriptsammlung, mit der die Bibliotheksverwaltung incl. Ausleihe und Recherche gelingt. Die Scriptsammlung wird seit Mitte 2005 entwickelt und ist besonders an den Bedürfnissen von Schulen angepasst.

11.08.2022 RobertG | Kategorie: PHP/ Management
responsive vertikales Menu

Diese Menu basiert auf php, jQuery, css und ajax. Wer sein Menu mit nested sets vertikal realisieren will, findet darin eine gute Lösung.

11.08.2022 COVISIONMEDIA | Kategorie: JAVASCRIPT/ Navigation
VIZUKA Affiliate CMS & Preisvergleich Portal ansehen VIZUKA Affiliate CMS & Preisvergleich Portal

Produktkalalog mit Preisvergleichfunktion, Gutscheinverwaltung und umfangreichem CMS. Live-Produktdaten! Nischen- oder Allg. Produktkatalog von hunderten Shops und über 60 Millionen Produkte mit wenigen Klicks erstellen. Mitglieder- & Werbekundenbereich.

10.08.2022 VIZUKA | Kategorie: PHP/ Affiliate-Programme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:32 Uhr.