Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

  • Autor

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 von speedi

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

  • Autor

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.

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.