php.de

Zurück   php.de > php.de Intern > Off-Topic Diskussionen

Off-Topic Diskussionen Mach mal Pause vom Programmieren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.09.2009, 17:51  
Benutzer
 
Registriert seit: 13.08.2009
Beiträge: 32
PHP-Kenntnisse:
Anfänger
Larkin befindet sich auf einem aufstrebenden Ast
Standard [SQL - Verständnissfrage] Sind Joins schneller als "normale" Datenbankabfragen?

Hallo,

bisher habe ich bei Datenbankanfragen immer folgendes gemacht.

"SELECT foo1, foo2 ..... foo30, foo31 FROM bar WHERE id = $variable"

Nun würde mich mal interessieren ob es schneller wäre diese große Tabelle in mehrere kleine zu unterteilen und mit Joins zu verbinden.

Gibt es dazu im Web irgendwelche Seiten die Benchmarks mit Datenbanken durchführen, so wie einige Seiten das mit PHP machen?

Alles was ich gefunden habe handelte von Problemen irgendwelcher User mit ihren JOINs oder es waren Erklärungen was JOINs sind - Angaben zur Geschwindigkeit habe ich beim Überfliegen nicht entdecken können.

P.S. ich muss gestehen, mit Joins habe ich mich noch nicht richtig beschäftigt, geschweige denn gearbeitet, möchte mich aber demnächst näher damit befassen, weil es, soweit ich das verstanden habe, die Datenhaltung deutlich übersichtlicher gestaltet.

Gruß
Larkin
Larkin ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 15.09.2009, 18:56  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Ich weiß deine Spaltenbezeichnung jetzt nicht zu deuten, aber sehr viele Spalten, dazu noch durchnummeriert deuten auf ein schlechtes Datenbank-Design hin. Um wieviele Datensätze handelt es sich denn? Hast du mehr Schreib- oder Lesezugriffe? Welche Engine verwendest du?
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 15.09.2009, 19:04  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wenn du eh immer alle Daten ausliest ist es besser wenn du die Daten auch in einer Tabelle stehen hast. Wenn du natürlich nur kleine Teile auslesen willst und nicht jeder Datensatz alle Informationen besitzt ist es vielleicht sinnvoll bestimmte Daten auszulagern und bei bedarf über einen JOIN hinzuzufügen. Kommt aber immer auf den Anwendungszweck drauf an.
Flor1an ist offline   Mit Zitat antworten
Alt 16.09.2009, 03:15  
Benutzer
 
Registriert seit: 13.08.2009
Beiträge: 32
PHP-Kenntnisse:
Anfänger
Larkin befindet sich auf einem aufstrebenden Ast
Standard

Die Nummerierung sollte nur als Beispiel herhalten. Ich wollte damit zeigen das viele Spalten vorhanden sind.

Momentan brauche ich auch noch keine JOINs da ich bis auf 2 oder 3 Spalten immer alle brauche.

Da ich aber beim rumstöbern nach anderen Themen immer wieder auf Inner, Outer, Left JOINs gestoßen bin, und dort oftmals die Geschwindigkeit eben dieser angepriesen wurde, würde es mich interessieren ob es schneller ist die Tabelle zu zerpflücken und mit JOINs zu verbinden, oder ob es besser ist nur eine Tabelle zu haben in der alles steht.

Für mich wäre es logischer wenn die Methode mit den JOINs langsamer wäre, sofern man immer alle Felder bis auf 2 oder 3 benötigt. Aber vielleicht liege ich ja falsch. Dahingehend konnte ich nämlich nichts finden.

Was das Lese/Schreib-Verhältnis angeht, das dürfte bei 70% Lesen und 30% Schreiben liegen.

Genutzt wird momentan MySQL - MyISAM.
Larkin ist offline   Mit Zitat antworten
Alt 16.09.2009, 09:03  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Naja JOINs sind ja nicht nur dafür gedacht Tabellen auseinander zu rupfen. Sondern eher dafür verschiedene Datensätze mit einer Relation zueinander zusammen zu führen.

Zum Beispiel hast du eine Tabelle Personen und eine Tabelle Mietautos. Jetzt möchtest du alle Mietautos auslesen und dazu den aktuellen Mieter ermitteln. Dafür kannst du jetzt einen JOIN auf die Personen Tabelle machen und zwar so dass immer die entsprechende Person mit ausgelesen wird die in er Tabelle Mietautos als "mieter_id" geführt wird.

Ich denke kaum dass es sich bei dir lohnen würde die Tabelle auseinander zu nehmen denn wenn du sowieso fast alle Spalten ausliest müssen sowieso alle Daten geholt werden, JOINs würden da eher langsamer sein da du intern eben zwei Tabellen befragen musst und nicht mehr nur eine.

Die Frage ist halt ob es wirklich ein gutes Datenbankdesign ist wenn du so viele Spalten hast, bist du sicher dass es so sein muss?
Flor1an ist offline   Mit Zitat antworten
Alt 16.09.2009, 14:23  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

1 zu 1 Relationen machen selten Sinn (Ausnahme: Abbilden einer Vererbungshierarchie). Alles in einer Tabelle lassen aber eben die Ergebnismengen möglichst klein halten. Spart Zeit bei vielen Ergebnissen.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 20.09.2009, 15:42  
Benutzer
 
Registriert seit: 13.08.2009
Beiträge: 32
PHP-Kenntnisse:
Anfänger
Larkin befindet sich auf einem aufstrebenden Ast
Standard

Danke schon einmal an alle für die Antworten.
Zitat:
Zitat von Flor1an Beitrag anzeigen
Die Frage ist halt ob es wirklich ein gutes Datenbankdesign ist wenn du so viele Spalten hast, bist du sicher dass es so sein muss?
Man könnte das auch ändern - also es muss nicht so sein. Die Tabelle ist die erste SQL-Tabelle die ich angefertigt habe. Die vielen Spalten sind dadurch bedingt, das ich mal für einen Freund die Möglichkeit geschaffen habe Daten auf seinen Funpic-Server zu laden, und diese dann in die Datenbank einzufügen. Über phpmyadmin ist ihm das zu umständlich, und so muss er nur zwei Knöpfe drücken. Von den Passwortabfragen mal abgesehen.
Larkin 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
mysql joins mad Datenbanken 1 29.07.2009 22:40
MySQL Bug #15229: Unkown column bei JOINs pcschröda Datenbanken 4 11.04.2008 11:10
else Zweig weglassen - schneller? mAy^daY PHP Tipps 2008 9 27.12.2007 21:35
Verschachtelte JOINs ... Ergebnis abziehen ... tomfrit Datenbanken 2 10.12.2007 08:14
Count mit mehreren Joins cyberholic Datenbanken 4 07.06.2006 23:35
[Erledigt] Problem mit mysql_fetch_assoc und joins Datenbanken 7 06.01.2006 18:24
was ist schneller greenrover PHP-Fortgeschrittene 6 04.10.2005 10:55
[Erledigt] Wie schneller löschen? Datenbanken 2 10.09.2005 12:19
Mysql Joins Datenbanken 5 26.05.2005 21:15
[Erledigt] immer wieder: diese verda.... joins Datenbanken 3 08.03.2005 12:05
Was ist schneller? Datenbanken 8 07.02.2005 05:45
was ist schneller smarty, oder normaler php code? eQuin PHP-Fortgeschrittene 2 03.09.2004 11:51
Joins bei Insert? obi Datenbanken 7 16.08.2004 15:54
Was ist schneller? PHP Tipps 2004 2 25.07.2004 12:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
was sind joins, sql schneller, sql joins geschwindigkeit, sql geschwindigkeit, sql schneller machen, datenbankabfrage geschwindigkeit, sql schneller als mysql, sql schneller where in or, datenbankabfragen schneller machen, was macht datenbankabfragen schnell, sql abfragen mit vielen joins beschleunigen, php datenbank mieter, sql join schneller, großes sql schneller, joins sql schneller, join schneller als normal, mysql \große tabellen\ schneller verknüpfen, ist php oder sql schneller, ist es performanter viele joins oder große tabellen zu haben, was ist schneller abfrage über sql oder php

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:49 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