bigpoint Geschrieben 6. August 2003 Teilen Geschrieben 6. August 2003 Ich update eine Tabelle, das ganze mache ich mit einem cursor es funktionier auch ist nur sehr sehr langsam, kann ich es vielleicht auch auf eine andere weise lösen, hier cod declare @ma int,@mo int,@abr int,@p int set @ma = 2 set @mo = 1224 set @abr = 300200013 set @p = 230719 declare upd_cursor cursor for select ma,mo,abr,p from Tabel where ma=@ma and mo=@mo and abr=@abr and p=@p open upd_cursor fetch next from upd_cursor into @ma,@mo ,@abr ,@p while @@fetch_status = 0 begin UPDATE [Tabel] SET [xyz]=111 WHERE [Ma]= @ma and [Mo]= @mo and [Abr]= @abr and [P]= @p fetch next from upd_cursor into @ma,@mo ,@abr ,@p end [/PHP] Vielen Dank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 6. August 2003 Teilen Geschrieben 6. August 2003 Och 007ski... Gewöhn dir doch mal an, das du dazuschreibst welche Datenbank du meinst. Bei jedem Thread von dir muß erst nachgefragt werden. Siehe auch hier: http://www.fachinformatiker-world.de/forums/announcement.php?s=&forumid=18&announcementid=14 Ich weiß, das du den Microsoft SQL Server 2000 meinst, weil ich hier sowieso alles lese, bei anderen ist das vielleicht der erste Thread den sie von dir lesen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 6. August 2003 Autor Teilen Geschrieben 6. August 2003 Original geschrieben von Wolle Och 007ski... Gewöhn dir doch mal an, das du dazuschreibst welche Datenbank du meinst. Bei jedem Thread von dir muß erst nachgefragt werden. Siehe auch hier: http://www.fachinformatiker-world.de/forums/announcement.php?s=&forumid=18&announcementid=14 Ich weiß, das du den Microsoft SQL Server 2000 meinst, weil ich hier sowieso alles lese, bei anderen ist das vielleicht der erste Thread den sie von dir lesen. SORRY :eek: es tut mir wirklich leid, aber glaube mir ich arbeite dran und ja es ist Microsoft SQL Server 2000 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
AxlHammer Geschrieben 6. August 2003 Teilen Geschrieben 6. August 2003 Hallo 007ski, ich hab zwar noch nichts mit PHP gemacht, aber meinen SQL-Kenntnissen zufolge kannst du den ganzen Cursor weglassen und einfach einmal das Update-Statement ausführen, das würde glaub ich schon reichen... Versuchs doch mal. Gruß, Axl Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 6. August 2003 Autor Teilen Geschrieben 6. August 2003 Original geschrieben von AxlHammer Hallo 007ski, ich hab zwar noch nichts mit PHP gemacht, Gruß, Axl ich auch nicht die Sache hat sich schon aber erleidigt Vielen Dank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
beetFreeQ Geschrieben 6. August 2003 Teilen Geschrieben 6. August 2003 Original geschrieben von AxlHammer Hallo 007ski, ich hab zwar noch nichts mit PHP gemacht, aber meinen SQL-Kenntnissen zufolge kannst du den ganzen Cursor weglassen und einfach einmal das Update-Statement ausführen, das würde glaub ich schon reichen... Versuchs doch mal. Gruß, Axl Ähm - mit PHP hat das auch nix zu tun... - das ganze ist nämlich Transact SQL und so ein Cursor wird meistens verwendet, um durch eine Datenmenge durchzugehen und für jeden Datensatz bestimmte Aufgaben zu erledigen... Allerdings haste recht, ich sehe hier auch keinen Grund, einen Cursor zu verwenden... - aber warum einfach, wenn's auch kompliziert geht ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 11. August 2003 Autor Teilen Geschrieben 11. August 2003 Original geschrieben von beetFreeQ Allerdings haste recht, ich sehe hier auch keinen Grund, einen Cursor zu verwenden... - aber warum einfach, wenn's auch kompliziert geht ... kannst Du bitte auch vieleich die einfache Methode verraten Allerdinks müß ich dazu eine korektur des codes machen declare @ma int,@mo int,@abr int,@p int set @ma = 2 set @mo = 1224 declare upd_cursor cursor for select ma,mo,abr,p from Tabel where ma=@ma and mo=@mo and abr=@abr and p=@p open upd_cursor fetch next from upd_cursor into @ma,@mo ,@abr ,@p while @@fetch_status = 0 begin /* hier wird aber noch eine SP aufgerufen die mir einen wert lierert bzw berechnet @wert der für jeden @p und @abr anderes ist */ UPDATE [Tabel] SET [xyz]=@wert WHERE [Ma]= @ma and [Mo]= @mo and [Abr]= @abr and [P]= @p fetch next from upd_cursor into @ma,@mo ,@abr ,@p end [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
beetFreeQ Geschrieben 11. August 2003 Teilen Geschrieben 11. August 2003 Original geschrieben von 007ski kannst Du bitte auch vieleich die einfache Methode verraten Allerdinks müß ich dazu eine korektur des codes machen declare @ma int,@mo int,@abr int,@p int set @ma = 2 set @mo = 1224 declare upd_cursor cursor for select ma,mo,abr,p from Tabel where ma=@ma and mo=@mo and abr=@abr and p=@p open upd_cursor fetch next from upd_cursor into @ma,@mo ,@abr ,@p while @@fetch_status = 0 begin /* hier wird aber noch eine SP aufgerufen die mir einen wert lierert bzw berechnet @wert der für jeden @p und @abr anderes ist */ UPDATE [Tabel] SET [xyz]=@wert WHERE [Ma]= @ma and [Mo]= @mo and [Abr]= @abr and [P]= @p fetch next from upd_cursor into @ma,@mo ,@abr ,@p end [/PHP] [/b] Achso - du berechnest den Wert immer neu... - so wie's im ersten Code aussah, wolltest du doch das feld xyz überall mit 111 belegen - und das wäre auch einfacher gegangen... - wenn du aber mit einer SP den Wert für das Feld ermittelst, geht's wohl nicht ohne Cursor... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 12. August 2003 Autor Teilen Geschrieben 12. August 2003 Original geschrieben von beetFreeQ Achso - du berechnest den Wert immer neu... - so wie's im ersten Code aussah, wolltest du doch das feld xyz überall mit 111 belegen - und das wäre auch einfacher gegangen... - wenn du aber mit einer SP den Wert für das Feld ermittelst, geht's wohl nicht ohne Cursor... schade, weil es ganz langsam ist und ich dachte .... vielleich kann man es beschleinigen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
beetFreeQ Geschrieben 12. August 2003 Teilen Geschrieben 12. August 2003 Original geschrieben von 007ski schade, weil es ganz langsam ist und ich dachte .... vielleich kann man es beschleinigen Naja, mit etwas Glück hilft es, die Tabelle mit einigen Indexen (oder wie heißt da die Mehrzahl? ) zu bestücken. Am Besten legst du welche auf die Spalten, nach denen du selektierst... Ansonsten könntest du die Stored Procedure, die du da zwischendurch ausführst, ja mal posten - vielleicht braucht die ja schon länger als nötig! Hast du die Ausführung des Codes schonmal im SQL Profiler analysiert? Da kann man meistens ganz gut erkennen, wo die Engstellen liegen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.