Ich hab mal wieder ne komische Frage... Ich schreib nen Prog, was mit MSSQL und MySQL arbeiten kann. Nun ist mir dabei was aufgefallen... Kann es sein, dass: ...MySQL sehr schnell ist, wenn man viele kleine Abfragen hat, dafür aber sehr langsam bei Großen abfragen ist. ...MSSQL Sehr schnell bei großen Abfragen ist und bei vielen kleinen sich fast garnicht bewegt... ???
Kann man da vlt ihrgendwas machn, damit das bei beiden recht gleichmäßig ist...?
Ich denke man kann da in der Art und Weise wie Tabellen und Indizes in den Datenbanken angelegt werden durchaus etwas "schrauben" ohne den Programmcode anpassen zu müssen. Da ich in den letzten Jahren immer weniger mit MySQL arbeite, kann ich hierzu leider aktuell keine Aussage treffen. Für MS SQL kann ich Dir folgenden Tipp geben.
Im Management Studio kann man die ausgeführten Abfragen analysieren und bekommt Verbesserungsvorschläge. Dazu mit RechtsKlick auf den Server den "Activity Monitor" öffnen. Im Activity Monitor gibt es den Bereich "Recent Expensive Queries". Dort wiederum sind einzelne Abfragen aufgelistet zu denen man sich mit RechtsKlick auf "Show Execution Plan" die Details der Ausführung anschauen kann. Sollte das Management Studio Optimierungspotential erkennen, so wird dies mit einer roten Meldung am oberen Bildschirmrand angezeigt.
Dies wäre zumindest ein erster Ansatz um das Laufzeitverhalten für MS SQL zu analysieren.
Für MSSQL kann ich dir den Artikel How To: Optimize SQL Queries als Einstieg ans Herz legen. Besonders interessant ist der Abschnitt "Using SQL Query Analyzer". Der Artikel geht nur kurz auf die Grundlagen ein aber er erklärt gut wie der Query Analyzer funktioniert, was Ausführungspläne sind und wie man sie ließt.
Sobald du das verstanden hast, kannst du dir deine Ausführungspläne anschauen und schauen wo das Problem genau liegt.
Aus die IO und Time Statistics sind sehr Aufschlussreich und zeigen zum Beispiel an, wann das Datenbankfile defragmentiert werden muss (bringt dann häufig große Geschwindigkeitszuwachse) oder Index neu gebaut werden müssen.
ich wage (fast) nicht zu fragen, weils selbstverständlichkeiten sind:
1) indizes hast du angelegt? 2) dir ist klar, das mysql mittels des tabellentypes 'myisam' auch transaktionlose (und damit ein kleines funzerl schnellere) tabellen anbietet?
ansonsten ist es für performancevergleiche oder performanceprobleme immer hilfreich, wenn du uns die tabellenbeschreibung, mengengerüst und verwendete sql´s mitteilst.
Indizes hab ich selbstverstendlich drauf, sind auch auf beiden systemen gleich. ich hab ca. 25k Datensätze in der Tabelle. Da mach ich mit ner for schleife count abfragen drauf.
Ich eläutere das ganze nochmal ein bisschen besser... Ich hohl mir ne Tabelle... Dann geh ich die tabelle mit ner forschleife durch. In der schleife frag ich mit ner count abfrage, wie oft jeder datensatz da drinn ist. wenn er nicht drinn ist, also "0" schreib ich ihn in eine neue Tabelle. Ich hoffe mein proffesionelles Bild hilft ^^
ich hab ca. 25k Datensätze in der Tabelle.
Da mach ich mit ner for schleife count abfragen drauf.