|
|
|
|
|
|
|||||||
| Datenbanken SQL und Co |
|
|
|
LinkBack | Themen-Optionen | Thema bewerten |
|
|
#1 (permalink) |
|
Erfahrener Benutzer
|
Ich habe ein Performanceproblem und bin mir sicher, dass es hausgemacht ist, weiß aber nicht, wo ich ansetzen soll.
tab1: (ca. 300.000 Zeilen) id int(10) feld1 varchar (30) sperre set 'ok,gesperrt' (weitere 10 Felder) Primary Key ist id, auf feld1 liegt ein Index. tab2: (ca 1000 Zeilen) feld2 varchar (30) Index liegt auf feld2 Feld2 enthält solche Daten: %text1% %text2% usw. Die Aufgabe besteht darin, alle Zeilen in tab als 'gesperrt' zu markieren, wenn tab1.feld1 LIKE tab2.feld2 ist. Ich kann nur mit phpmyadmin umgehen und habe dort folgenden SQL-Befehl eingegeben: PHP-Code:
PHP-Code:
Wo habe ich den Murks eingebaut? |
|
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
|
#3 (permalink) |
|
Erfahrener Benutzer
|
Danke für die Antwort.
Du hast zu meinem UPDATE eigentlich nur die Häkchen hinzugefügt, bringt das den erhofften Geschwindigkeitszuwachs? Ich bin bei komplexen Updates immer so vorgegangen, dass ich die WHERE-Klausel erstmal mit einem SELECT * geprüft habe, und dann das "SELECT * FROM" durch "UPDATE" ersetzt und die SET-Statements eingebaut habe. In diesem Fall findet das SELECT aber schon kein (schnelles) Ende, und ich will kein Update starten, das mit eine Woche lang den Server lahmlegt |
|
|
|
|
|
#4 (permalink) |
|
moderatives Dielektrikum
Registriert seit: 21.05.2008
Beiträge: 25.134
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Muß es zwingend LIKE sein? Meines Wissens ist das wesentlich lahmer als der normale '=' Operator. Die Backticks bringen wohl eher keine Performanceunterschiede...
__________________
-- „Eins ist Fakt: Gescannt wird nackt!“ Privatsphäre 2.0 - Nacktscanner mit Eyetracking. Unser Flugzeug darf kein geschlechtsfreier Raum sein. -- |
|
|
|
|
|
#6 (permalink) |
|
Ehemaliger Moderator
Registriert seit: 13.02.2008
Beiträge: 5.631
PHP-Kenntnisse: Fortgeschritten ![]() ![]() |
Also ich finde das ist wohl Ansichtssache und auch nur wenn ich eine Spalte `alter` nennen will, weil eben das Alter eines Dinges drin steht, dann programmiere ich ja nicht unsorgfältig.
__________________
1 && 1 macht 1 - Klingt komisch, ist aber so |
|
|
|
|
|
#7 (permalink) | |
|
moderatives Dielektrikum
Registriert seit: 21.05.2008
Beiträge: 25.134
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Zitat:
Code:
UPDATE `tab1` , `tab2` SET `tab1`.`sperre` = 'gesperrt' WHERE `tab1`.`field1` LIKE `tab2`.`field2`
__________________
-- „Eins ist Fakt: Gescannt wird nackt!“ Privatsphäre 2.0 - Nacktscanner mit Eyetracking. Unser Flugzeug darf kein geschlechtsfreier Raum sein. -- |
|
|
|
|
|
|
#8 (permalink) | |
|
Erfahrener Benutzer
|
Zitat:
PHP-Code:
Ein Bekannter, der allerdings auch nicht weiterhelfen konnte sagte mir, dass wohl alle Zeilen der einen Tabelle mit allen Zeilen der anderen Tabelle verknüpft würden und dann erst die Vergleichsbedingung geprüft würde. Das würde bei meinem SQL-Statement bedeuten, dass ich um die 30 Mio Zeilen bilde. Kann man das Ganze anders formulieren? Sonst bau ich mir per PHP eine Schleife durch alle Zeilen der kleinen Tabelle und such dann in der großen Tabelle rum - aber das kann ja nun wirklich nicht der Weisheit letzter Schluss sein. |
|
|
|
|
|
|
#10 (permalink) | |
|
Erfahrener Benutzer
Registriert seit: 02.04.2008
Beiträge: 4.034
![]() |
Zitat:
Code:
UPDATE
tab1,
tab2
SET
tab1.sperre = 'gesperrt'
WHERE
tab1.field1 LIKE tab2.field2
__________________
Gruss L |
|
|
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] Kein Ergebnis bei SELECT (MySQL 4.1.9) | dr.e. | Datenbanken | 4 | 15.06.2008 19:54 |
| [Erledigt] Mysql Insert Select + Concat | Hu5eL | Datenbanken | 14 | 10.06.2008 10:39 |
| SELECT über zwei Tabellen | KingCrunch | Datenbanken | 9 | 23.03.2007 04:01 |
| select mit inhalten aus mehreren Tabellen | wurtzel | Datenbanken | 6 | 02.12.2006 17:37 |
| SELECT aus 2 Tabellen | jens21 | Datenbanken | 3 | 30.08.2006 00:54 |
| SELECT aus zwei "gleichen" Tabellen | patr1k | Datenbanken | 2 | 05.07.2006 11:57 |
| Select über zwei Tabellen | danix-dj | PHP Tipps 2006 | 11 | 22.05.2006 15:13 |
| Select über 2 Tabellen | MasterMind | Datenbanken | 11 | 08.04.2006 11:43 |
| Select über mehrere tabellen | Sclot | Datenbanken | 14 | 24.11.2005 16:56 |
| SELECT * FROM 2 Tabellen - Problem | Datenbanken | 1 | 01.09.2005 16:30 | |
| SELECT über 4 Tabellen mit DISTINC | PHP Tipps 2005 | 2 | 08.03.2005 19:50 | |
| [Erledigt] mehrere tabellen verknüpfen bei select | Datenbanken | 3 | 29.09.2004 11:00 | |
| INSERT INTO SELECT an mehrere Tabellen? | Datenbanken | 6 | 17.09.2004 16:57 | |
| 2 mal select 1 form | PHP-Fortgeschrittene | 1 | 01.09.2004 20:13 | |
| [Erledigt] Join für Select Count(`id`)-Abfrage über 4 Tabellen | Datenbanken | 4 | 10.07.2004 18:32 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| select benchmark oracle statement |