title image


Smiley Re: Unterabfrage ergab mehr als ein Wert oder NULL
Hallo Saluk,

Prima, danke! Das funktioniert !



Nun habe ich jedoch noch das Geschwindigkeitsproblem.



Ich hole mir die Werte von @id aus einem Cursor. Dies können schon mal einige Tausend Werte sein (zur Zeit ca. 8.000)



Die Abfrage sieht in etwas so aus:



set nocount on

declare @id varchar(15)

DECLARE k CURSOR FOR

select distinct ID

from TabelleA

where Feld9 is null

and 1 = (select count(*) from TabelleB where VertragsID = ID)

OPEN k

FETCH NEXT FROM k

into @id

WHILE @@FETCH_STATUS = 0

BEGIN



exec ('update TabelleA

set Feld1 = (select Wert1 from TabelleB where VertragsID =''' + @id + ''' )

where ID =''' + @id +''' and Feld9 is null ')



FETCH NEXT FROM k

into @id

END

CLOSE k

DEALLOCATE k

set nocount off







Die TabelleB enthält ca. 1.200.000 Einträge in der gesucht werden muss.



Die Abfrage läuft bei 100 Werten von @id ca. 5 Minuten, obwohl wie gesagt, in beiden Tabellen auf den in Frage kommenden Feldern ein gruppierter, sortierter Index vorhanden ist.



Bin mit meinem Latein am Ende, wie das ganze schneller zu bekommen ist.



Hardwarevoraussetzungen sind nicht spitze, sollten aber ausreichen (2xIntel Xeon 700 Mhz und 4 GB Hauptspeicher)
------------------------------- Gruß aus Magdeburg Karsten

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: