speedi Geschrieben 6. Mai 2009 Teilen Geschrieben 6. Mai 2009 Hi, ich war aus Gründen der Performance dazu gezwungen eine sehr große Tabelle in mehrere kleinere gleicher Struktur aufzuteilen. Die Struktur ist die gleiche geblieben nur die Anzahl der Datensätze pro tabelle wurde eben erheblich gesenkt. In sehr seltenen Fällen ist es jedoch nötig alle Datensätze abzufragen, die jetzt in verschiedenen Tabellen liegen. Wie macht man das am besten? gruß Daniel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
small-step Geschrieben 6. Mai 2009 Teilen Geschrieben 6. Mai 2009 Hallo, abhängig ob von der genutzten (nicht genannten) Datenbank unterstützt kannst Du das mit UNION erledigen. Das wird die Performance aber endgültig in den Keller reißen. Mit UNION muss die Struktur der Tabellen nicht zwangsläufig gleich sein, nur die in der Auswahlmenge aufgelisteten Spalten müssen im Datentyp und der Reihenfolge übereinstimmen. Gruß, small-step Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
speedi Geschrieben 6. Mai 2009 Autor Teilen Geschrieben 6. Mai 2009 (bearbeitet) Danke! Ich werde das gleich mal ausprobieren. Solang die Abfrage an der Stelle nicht mehr als 10 Sekunden braucht ist mir die Performance an er Stelle zweitrangig. Der Fall tritt nur ein wenn der User eine bestimmte Aktion machen will. Was das DBMS angeht: Ich Nutze einen MySQL 5.0. Der grund wieso ich die Tabelle geteilt hab war, dass ich DB normal mit einer Frequenz von 10Hz abfragen will. Eine abfrage hat aber zuletzt (je nach "Füllstand") bis zu 300ms gebraucht. Bearbeitet 6. Mai 2009 von speedi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
small-step Geschrieben 6. Mai 2009 Teilen Geschrieben 6. Mai 2009 Hallo, ich kann jetzt keine qualifizierte Aussage zur Performance von LIMIT in MySQL sagen, aber eventuell wäre das eine Möglichkeit gewesen. Damit kannst Du die Ergebnismenge einer Abfrage einschränken, also aus 50000 Rückgabewerten beispielsweise 50 machen. Wie Effizient MySQL das aber macht weiß ich auch nicht, schon ewig nichts mehr damit gemacht. Gruß, small-step Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
speedi Geschrieben 6. Mai 2009 Autor Teilen Geschrieben 6. Mai 2009 Die Ergebnissmenge habe ich schon soweit eingeschränkt, dass das nicht mehr das Problem ist. Das Problem sind wohl eher die WHERE-Anweisungen. Aber zurück zum Problem: Ich hatte eigentlich vor ein GROUP BY über die Gesamte-Ergebnissmenge laufen zu lassen. Aber mit UNION kann ich leider nur einzelne Ergebnismengen zusammenfügen. Ich denk ich werde mir wohl die Ergebnisse aller relevanzen Tabellen holen und das dann im Programm erst aussortieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 6. Mai 2009 Teilen Geschrieben 6. Mai 2009 Views wären ggf auch noch eine Möglichkeit, obwohl mir das doch sehr gegen das Konzept spricht, wenn Du aus einer Tabelle mehrere identische machst. Selbst wenn Du 10^10 Datensätze hast, sollte es möglich sein. Hast Du Dir evtl einmal überlegt, dass der DBMS Server nicht performant genug ist, oder ein Cluster sinnvoll wäre. Und nein, es ist keine gute Idee, das was eine Datenbank macht in die Anwendungslogik zu legen Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.