Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung Datenbanken

MySQL - Abfrage optimieren

Mitglied: Maik87

Maik87 (Level 2) - Jetzt verbinden

07.03.2012 um 23:09 Uhr, 2557 Aufrufe, 5 Kommentare

Hallo Gemeinde,

ich habe in MySQL eine Tabelle, die folgenden Aufbau hat:

JahrMonat - BereichsID - a - b - c - d ...
201001 - 1 - ...
201002 - 1 - ...
201003 - 1 - ...
201004 - 1 - ...
201005 - 1 - ...

Es werden monatsbezogen für mehrere Bereiche verschiedene Spalten (a - d in diesem Beispiel) gespeichert. Jetzt benötige ich eine Abfrage, in der ich mehrere Monate zusammenfasse und dabei die Spalten miteinander verrechne:

SELECT ((t1.a + t1.b + t1.c) - (t1.d)) AS Daten01,((t2.a + t2.b + t2.c) - (t2.d)) AS Daten02,((t3.a + t3.b + t3.c) - (t3.d)) AS Daten03
FROM tabelle t1 LEFT JOIN tabelle t2 on (t1.BereichsID = t2.BereichsID) LEFT JOIN tabelle t3 on (t2.BereichsID = t3.BereichsID)
WHERE t.BereichsID = 1234

So oder so ähnlich (aus dem Kopf getipt - ungetestet) sieht meine Abfrage aus, die auch laufen würde. Jedoch braucht diese einige Sekunden, obwohl "keine" Daten drin sind.
Wie bekomme ich das Ding schneller? Wie kann ich zusätzlich noch die Monate mit einschränken?

Danke euch!!
Mitglied: nxclass
07.03.2012 um 23:38 Uhr
tut mir Leid - aber deine Abfrage ergibt keinen Sinn !?

  • wozu die Berechnungen 3 mal durchführen
  • über die selbe Tabelle (selbe Daten)
  • und mit LEFT Join verbinden

... was erwartest Du für eine Ausgabe ?

in der ich mehrere Monate zusammenfasse und dabei die Spalten miteinander verrechne
da müsste doch irgendwo auch auf JahrMonat bezug genommen werden
Bitte warten ..
Mitglied: Maik87
07.03.2012 um 23:47 Uhr
Sorry, du hast Recht...
Wie ging es weiter...!?

WHERE t1.BereichsID = 1234 AND t1.JahrMonat = 201001 AND t2.JahrMonat = 201002 AND t3.JahrMonat = 201003

glaub ich...

Ich möchte die Daten, die Zeilenweise in der DB gespeichert sind als Spalten ausgeben.
Bitte warten ..
Mitglied: nxclass
08.03.2012 um 09:51 Uhr
verstehe - dazu muss ich aber sagen, dass die Datenbank (Datenbankabfrage) nicht die Aufgabe hat Ausgaben für die Ausgabe um zu formatieren.
Oder anders gesagt : Pivot - Tabellendarstellung kann nicht sinnvoll mit der Datenbankabfrage gemacht werden.
Bitte warten ..
Mitglied: Maik87
08.03.2012 um 10:02 Uhr
Ja, dass es nicht optimal ist, habe ich mir bereits bei den Script-Laufzeiten gedacht.

Aber wie kann ich es sonst lösen? Die Daten sind nunmal Zeilenweise gespeichert (was ich auch gern so beibehalten würde, da je Monat viele Spalten gespeichert sind, die ich sonst auch nicht anders aufzuteilen wüsste).

Würde sowas auch mit einem Haufen Sub-Selects laufen?

SELECT (SELECT (t.a+t.b+t.c) AS Daten FROM tabelle t where t.JahrMonat = "201001) AS Dat201001, (SELECT (t.a+t.b+t.c) AS Daten FROM tabelle t where t.JahrMonat = "201002) AS Dat201002 ....

Ist dies performanter?
Bitte warten ..
Mitglied: nxclass
08.03.2012 um 10:40 Uhr
Da Du nur durch reduzieren der zu verarbeitenden Daten eine Verbesserung erzielen kannst - aber bei jedem Sub Select eine andere Where Bedingung vorhanden ist - sehe ich kaum Spielraum für Optimierungen über die Select Abfrage.

... ggf kann man vorher noch den Datenbestand auf das Jahr reduzieren
01.
JahrMonat LIKE '2010%'
... aber viel wird es wohl nicht bringen.

Meine Empfehlung:
  • Spalte das Feld JahrMonat auf in Jahr und Monat
  • Ersetze die Felder a - d durch key und value
01.
Jahr | Monat | BereichsID | key | value 
02.
2010 | 1 | 1 | a | wert 
03.
2010 | 1 | 1 | b | wert 
04.
2010 | 1 | 1 | c | wert 
05.
2010 | 1 | 1 | d | wert 
06.
2010 | 2 | 1 | a | wert 
07.
...
... dann geht das Filtern und Gruppieren schneller und einfacher
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MYSQL Abfrage
gelöst Frage von datadexxDatenbanken20 Kommentare

Halo an alle MySQL Spezialisten! Wie kann ich denn am besten folgende Werte abfragen und berechnen? Ausgang für die ...

Datenbanken
MySQL Abfrage für eine Umsatzauswertung kombinieren
gelöst Frage von RedBullmachtfitDatenbanken2 Kommentare

Hallo zusammen, ich möchte Kundenumsätze aus einer MySQL (v5.6, Windows) Datenbank ziehen. Ich komme mit der Struktur jedoch nicht ...

PHP
PHP MySQL Abfrage aus Datenbank
Frage von Lost144PHP12 Kommentare

Hallo, Ich habe in einer Datenbank daten über VM's stehen. Angaben wie hostname,adresse, serverat usw. Wie kann ich in ...

Datenbanken
MySQL Abfrage schlechte Performance
Frage von TorstenEDatenbanken7 Kommentare

Ich mache folgende Abfrage Suche alle Artikel in welchem der "Suchbegriff" im Name des Artikels vorkommt oder in 2 ...

Neue Wissensbeiträge
Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 2 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 TagenSicherheit13 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Heiß diskutierte Inhalte
Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall10 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS9 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen9 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk8 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...