webForumDet fria alternativet

Skapa korrekta SP´s

Databaser & SQLur Databashanterare & SQL

4 svar · 204 visningar · startad av ironhead

ironheadMedlem sedan mars 20011 346 inlägg
#1

Halloj!

Jag har en massa Lagrade Procedurer som jag vill effektivisera.
Denna SP fungerar, men jag skulle vilja effektivisera partiet där man kollar om det finns en eller flera värden i "@sFM" (OR/AND).

Kan man göra på nåt bättre/effektivare sätt?

Jag vet att man helst inte ska stränga ihop SQL-satsen i SP:n, men behöver hjälp för att snickra till det

SET @SQLstring ='SELECT * FROM tabell WHERE test=' + @test

		begin
		set @CommaWk = 0
		set @SQLString = @SQLString + N'and  ('
		select @iCommaAt = CHARINDEX(',',@sFM)
		while @iCommaAt > 0
			begin
			if @CommaWk > 0 set @SQLString = @SQLString + N' or '
			if substring(@sFM, 1, @iCommaAt - 1) > ''
				begin
				set @CommaWk = @CommaWk + 1
				set @SQLString = @SQLString + 'Fakt.sFakt = ''' + substring(@sFM, 1, @iCommaAt - 1) + ''''
				end
			select @sFM = substring(@sFM, @iCommaAt + 1, 255)
			select @iCommaAt = charindex(',', @sFM)
			end
			if @CommaWk > 0
				begin
				set @SQLString = @SQLString + N' or '
				end
		if @sFM > '' SET @SQLString =  @SQLString +  N'Fakt.sFakt =  ''' + @sFM + ''''
		set @sqlstring = @SQLString + N')'
		end

:l

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Förmodligen går det väl att förbättra. Jag skulle inte börja i den änden om jag upplevde prestandaproblem.

ironheadMedlem sedan mars 20011 346 inlägg
#3

nja. jag upplever inga prestandaproblem....men när jag frågar nån så säger de att jag gör på fel sätt...men sen hör jag inget mer :\

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Här finns lite alternativa sätt och även en länk där man skapar en tabellvariabel. Det sistnämnda sättet tycker jag är det bästa då man undviker dynamisk sql.

http://www.tek-tips.com/faqs.cfm?spid=183&sfid=3979

ironheadMedlem sedan mars 20011 346 inlägg
#5

oki! Tack! :)

143 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)