Announcement

Collapse
No announcement yet.

TQuery.next langsam mit Blobfeldern

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

  • TQuery.next langsam mit Blobfeldern

    Hallo,

    ich habe einen MS SQL Server und hole über eine Delphi 7 anwendung mit einer TQuery Komponente einige Daten, darunter 1 Blobfeld.
    Obwohl in den selektierten Sätzen das Blobfeld gar nicht belegt ist, dauert das durchlaufen der Ergebnismenge mit TQuery.next bis zu 1 sec., die SQL selber vielleicht 0,05 sec.

    Wir haben schon in der BDE mit BlobSize Parametern experimentiert, aber nichts hat wirklich geholfen.
    Wo kann man denn noch was einstellen? Danke fürs nachdenken

    Kathrin

  • #2
    Einfach das Blobfeld nicht in der SQL-Anweisung aufnehmen

    Statt

    Select * from MyTabelle

    verwende

    Select Feld1, Feld2, ... from MyTabelle

    hierbei darf das Blob-Feld nicht in der Feldliste auftauchen.

    Mit jedem Next wird für den entsprechenden nächsten Datensatz der Inhalt aller Felder im Client-Speicher übertragen und dort gespeichert. Und falls das Blobfeld 10 MB beinhaltet ..

    Comment


    • #3
      Hallo und Danke für die schnelle Antwort.
      Ich würde das Blobfeld nicht mit holen, wenn ich es nicht brauchen würde. Es ist Zufall, daß gerade in dem konkreten fall dort nichts drinsteht.
      Das Problem ist, das Query.Next eben trotzdem so lange dauert, obwohl nichts drinsteht (also auch kein Platz benötigt wird).
      Außerdem (unsere Applikation läuft sowohl auf Oracle als auch auf MS SQL Server) dauert es in Oracle bei weitem nicht so lange.
      Ich denke also, daß es irgendwelche Einstellungen am SQL Server oder in der BDE / Treiber sind.

      Comment


      • #4
        Evtl. (Vermutung) wird nicht nur 1 Datensatz geholt sondern ein Block (mehrere Datensätze).<br>
        Sonst hätte ich auf die schnelle keine Idee mehr :-

        Comment


        • #5
          Hallo,

          wie sieht die Deklaration der BLOb-Spalte in der Datenbanktabelle aus? Welche Zugriffe protokolliert der Profiler des MS SQL Server mit, wenn diese Verzögerung auftritt?

          P.S: Wie Borland in der Hilfedatei <i>SQLLNK32.HLP</i> ausdrücklich dokumentiert, wird der alte SQLLinks-Treiber der BDE nur bis zur Version <b>6.5</b> des MS SQL Server offiziell unterstüzt. Die 6.5er-Version gehörte noch zur alten Sybase-Architektur. Ab der Version 7.0 ist der MS SQL Server ein völlig neuer Server, so dass die alte DBLib-Schnittstelle (auf die der SQLLinks-Treiber der BDE aufsetzt) nur noch simuliert wird. Nach offizieller Lesart von Microsoft und Borland sollte diese DBLib-Schnittstelle ab der Version 7 nicht mehr genutzt werden. Statt dessen ist nun der OLE DB Provider (ADO) bzw. der .NET-Provider (ADO.NET) der native Zugriffsweg

          Comment

          Working...
          X