php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.02.2006, 13:06  
Gast
 
Beiträge: n/a
Standard [Erledigt] WHERE frage

Guten tag,

table:
id = int
string = varchar

problem mit werden id's in form von 1,22,34,43,59,61,72 [...] bis zu 800 übergeben, ich muss nun rausfinden ob die ID's ein bestimten eintrag in feld string haben...

mein versuch
SELECT id FROM my_table WHERE string = "blah" AND id = "1" OR id = "22" [...] OR id = "777"

das query wird so ja doch etwas heftig lang!

gibt es ein besseren weg?

Gruss
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.02.2006, 14:16  
Benutzer
 
Registriert seit: 15.08.2007
Beiträge: 37
sinai befindet sich auf einem aufstrebenden Ast
Standard

Hallo

Ich bin zwar auch Anfänger, würde aber die erforderlichen Werte zur Abfrage ebenfalls in eine Tabelle legen und diese mittels Schleife abfragen.

Hätte zudem den Vorteil, dass du bei Änderungen der Abfragewerte nur die Tabelle ändern musst.

Aber evtl. hat ja jemand, der sich besser auskennt noch einen besseren Tipp

Andy
sinai ist offline   Mit Zitat antworten
Alt 05.02.2006, 14:40  
Gast
 
Beiträge: n/a
Standard

eine schleife macht weniger sinn, da dan in etwa 800 querys zusammenkommen!
  Mit Zitat antworten
Alt 05.02.2006, 15:15  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

www.mysql.de/IN
tapferesschneiderlein ist offline   Mit Zitat antworten
Alt 05.02.2006, 16:49  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von cambiocorsa
eine schleife macht weniger sinn, da dan in etwa 800 querys zusammenkommen!
Solange id einen Index hat macht der DB das nichts aus...
  Mit Zitat antworten
Alt 05.02.2006, 18:44  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.818
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von cptpicard
Zitat:
Zitat von cambiocorsa
eine schleife macht weniger sinn, da dan in etwa 800 querys zusammenkommen!
Solange id einen Index hat macht der DB das nichts aus...
oh, bitte. und wie das der datenbank was ausmacht.

der unterschied von

Code:
SELECT * FROM bla WHERE id=1;
SELECT * FROM bla WHERE id=2;
SELECT * FROM bla WHERE id=4;
gegen

Code:
SELECT * FROM bla WHERE id IN (1,2,4);
ist mehr als groß.
axo ist offline   Mit Zitat antworten
Alt 05.02.2006, 22:49  
Gast
 
Beiträge: n/a
Standard

die IN lösung ist knapp 3 mal schneller als einzelquerys.

gemssen via: "time mysql -u user -p pass <testfile.sql"

Gruss
  Mit Zitat antworten
Alt 05.02.2006, 23:18  
Gast
 
Beiträge: n/a
Standard

Ein anderer Ansatz:

1. Erstelle temporäre Tabelle mit übergebenen IDs
2. Erstelle temporäre Tabelle mit IDs die den bestimmten Eintrag haben
3. Select auf beide Tabellen mit join
  Mit Zitat antworten
Alt 05.02.2006, 23:20  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.818
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von cambiocorsa
die IN lösung ist knapp 3 mal schneller als einzelquerys.

gemssen via: "time mysql -u user -p pass <testfile.sql"

Gruss
richtig. und der unterschied ist bedeutend größer, wenn du die abfragezeit von php aus misst.
axo ist offline   Mit Zitat antworten
Alt 05.02.2006, 23:20  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.818
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von cptpicard
Ein anderer Ansatz:

1. Erstelle temporäre Tabelle mit übergebenen IDs
2. Erstelle temporäre Tabelle mit IDs die den bestimmten Eintrag haben
3. Select auf beide Tabellen mit join
wozu denn bitte? http://en.wikipedia.org/wiki/Reinven...e_square_wheel ?
axo ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kleine Frage zu WHERE Klausel in SQL String Plague Datenbanken 1 09.08.2006 11:23
WHERE String greift nicht,sobald ich zusätzliche Angaben hab GELight Datenbanken 4 04.05.2006 02:23
Mehrere Werte in WHERE abfrage McNet Datenbanken 6 23.04.2006 02:06
[Erledigt] select where TIME Datenbanken 7 17.02.2006 12:40
where in? bzw. feld auf inhalte überprüfen...? Datenbanken 3 12.02.2006 16:00
Mit Where überprüfen ob eine Spalte leer ist. solitaer Datenbanken 4 29.09.2005 18:34
[Erledigt] WHERE problem Datenbanken 5 12.06.2005 15:54
Befehlsoptimierung faux Datenbanken 4 31.05.2005 19:11
where string von einer funktion zu anderen transportieren PHP Tipps 2005 5 03.03.2005 16:29
Frage zur MySQL Abfrage Datenbanken 5 04.02.2005 12:31
SQL Injection Frage Ypsillon PHP Tipps 2004-2 3 31.12.2004 00:30
[Erledigt] Frage zur Funkrionen? PHP Tipps 2004-2 10 01.12.2004 09:42
Nur bestimmte Felder auslesen (forum_id) Datenbanken 10 22.10.2004 09:19
dringende frage PHP Tipps 2004 5 21.10.2004 12:57
Problem mit dem WHERE Befehl PHP Tipps 2004 5 08.07.2004 00:03


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:11 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.