Announcement

Collapse
No announcement yet.

Nix gegen SQL

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Nix gegen SQL

    Hallo alle zusammen,

    SELECT Nachname, Vorname, ID, RID, ... , LastChangerID
    FROM Master M
    WHERE 0 > ( SELECT SUM( WERT ) FROM Detail D WHERE D.MGID = M.ID )

    Wie kann es sein, das oben stehendes SQL-Script vom IB-Server in ca. 3s abgehandelt wird und selbige Abfrage in "Paradox-Umgebung" 8min ( in Worten: acht Minuten ) dauert ???

  • #2
    Hallo,

    der Grund dafür ist ganz einfach: Während der InterBase ein SQL-Server ist, der mengenorientiert arbeitet und bei dem ein Optimizer den schnellsten Zugriffsweg auf die Daten berechnet, muss die BDE bei einer Paradox-Datenbank SQL <b>simulieren</b>. Konkret bedeutet dies, das die Mengenoperation in viele einzelne datensatzorientiere IDAPI-Anweisungen umgesetzt werden muss. In meinem aktuellen Datenbankbuch habe ich ein ähnliches Beispiel, wobei ich dafür die Bezeichnung "Killer-SQL" verwende. Bei Paradox ist es sinnvoll, die Datenbank zu De-Normalisieren, wenn diese Abfrage häufiger aufgerufen werden soll.

    P.S: Es gibt aber noch einen Grund. Ein SQL-Server kann alle Zwischenergebnisse intern verwenden, beim Netzwerk-Zugriff auf eine Paradox-Datenbank muss die BDE alle Rohdaten anfordern, da alle Zwischenergebnisse lokal berechnet werden. Somit ist SQL auf eine Netzwerk-Paradoxdatenbank in der Regel langsam, wenn mehrere Tabelle über eine JOIN oder ein Sub-Select eingebunden werden.
    &#10

    Comment


    • #3
      Hallo,
      Offensichtlich aus der Traum, eine Anwendung SQL-orientiert auf Paradox-Basis zu entwickeln um ein späteres 'Upsizing' zu ermöglichen.

      Trotzdem Dank

      Comment


      • #4
        Hallo Gesine,

        ja - die Bruchstelle zwischen Desktop-Datenbank und SQL-Server ist zu gross. Dies betrifft aber alle SQL-Datenbanken. Nicht ohne Grund schiebt Microsoft den ACCESS2000-Anwendern die MSDE (Microsoft Database Engine alias SQL Server 7 Lite) unter, so das beim späteren Upsizing von einer MDB auf den SQL Server 7 keine Problem auftreten. Wenn man mit ACCESS2000 eine neue Datenbank anlegt und dabei das "neue" Format auswählt, werden die Daten in der MSDE-Datenbank gespeichert und nur die Formulare und Berichte etc. in der MDB-Datei von ACCESS. Somit gibt es hier keinen Unterschied beim Zugriff auf die Daten - alle SQLs wirken völlig gleich

        Comment


        • #5
          Hallo Andreas,

          Da hätte ich ja auch ganz gerne etwas von Inprise untegeschoben ;-).

          Oder ist MS -wie so oft- wieder mal schneller, besser, höher, weiter ?

          Comment


          • #6
            Hallo,

            seit Jahren habe ich darauf gewartet, das in <i>Delphi 4 Client/Server Suite</i> oder <i>Delphi 5 Enterprise</i> der InterBase-Server in der 4-User-Version als <b>frei verteilbarer Zusatz</b> in der Packung liegt. Jetzt bleibt nur zu hoffen, das die Open Source-Initiative für den <b>InterBase 6</b> nicht scheitert, so das auch wir eine kostenfrei verteilbare Alternative zu Paradox haben. Die ersten binären Beta-Versionen vom 6er Server und Client stehen unter http://www.interbase2000.org zum Download zur Verfügung

            Comment

            Working...
            X