i would like to optimize one part of my SQL Query. Ill tryed it myself, but it didnt get it better, its get even more worse. Ill know that this SQL code isn't optimal and it eat a lot of server performance.
insert
into #grid (
depotnummer , --varchar(18)
lagerstelle ,
bestand_num ,
bestand_neu_ist_num ,
betrag_num ,
kz_versteuerung_jn ,
id
)
select DEPOTNUMMER.PARAMETER_VARCHAR ,
LAGERSTELLE_EINBUCHEN.PARAMETER_VARCHAR,
BESTAND.PARAMETER_NUMERIC ,
ANZAHL_EINBUCHEN.PARAMETER_NUMERIC ,
0.00 ,
'J' ,
B.RBM_BUCHUNG_ID
from RBM_BUCHUNG B ,
RBM_BUCHUNG_PARAMETER DEPOTNUMMER ,
RBM_BUCHUNG_PARAMETER LAGERSTELLE_EINBUCHEN,
RBM_BUCHUNG_PARAMETER BESTAND ,
RBM_BUCHUNG_PARAMETER ANZAHL_EINBUCHEN ,
Kontenstamm K
where B.RBM_VORGANG_ID = @id
and DEPOTNUMMER.RBM_BUCHUNG_ID = B.RBM_BUCHUNG_ID and convert(char(20),DEPOTNUMMER.PARAMETER_NAME ) = convert(char(20),'depotnummer' )
and LAGERSTELLE_EINBUCHEN.RBM_BUCHUNG_ID = B.RBM_BUCHUNG_ID and convert(char(20),LAGERSTELLE_EINBUCHEN.PARAMETER_NAME) in( convert(char(20),'lagerstelle_einbuchen'),'lg_einbuchen')
and BESTAND.RBM_BUCHUNG_ID = B.RBM_BUCHUNG_ID and convert(char(20),BESTAND.PARAMETER_NAME ) = convert(char(20),'bestand' )
and ANZAHL_EINBUCHEN.RBM_BUCHUNG_ID = B.RBM_BUCHUNG_ID and convert(char(20),ANZAHL_EINBUCHEN.PARAMETER_NAME ) = convert(char(20),'anzahl_einbuchen' )
and K.Kontonummer = DEPOTNUMMER.PARAMETER_VARCHAR
and K.MANDANTEN_ID = isnull(@mandanten_id,K.MANDANTEN_ID)
update #grid
set primanoten_id = Primanoten_ID
from Primanoten P
where P.ID = id
and P.Quelle = 'RBM'
end
And thats the Showplan Output:
QUERY PLAN FOR STATEMENT 154 (at line 595).
STEP 1
The type of query is INSERT.
16 operator(s) under root
|ROOT:EMIT Operator (VA = 16)
|
| |INSERT Operator (VA = 15)
| | The update mode is direct.
| |
| | |MERGE JOIN Operator (Join Type: Inner Join) (VA = 14)
| | | Using Worktable3 for internal storage.
| | | Key Count: 1
| | | Key Ordering: ASC
| | |
| | | |MERGE JOIN Operator (Join Type: Inner Join) (VA = 11)
| | | | Using Worktable2 for internal storage.
| | | | Key Count: 1
| | | | Key Ordering: ASC
| | | |
| | | | |N-ARY NESTED LOOP JOIN Operator (VA = 8) has 4 children.
| | | | |
| | | | | |SORT Operator (VA = 1)
| | | | | | Average Row width is 6.000000
| | | | | | Using Worktable1 for internal storage.
| | | | | |
| | | | | | |SCAN Operator (VA = 0)
| | | | | | | FROM TABLE
| | | | | | | RBM_BUCHUNG
| | | | | | | B
| | | | | | | Index : SK1
| | | | | | | Forward Scan.
| | | | | | | Positioning by key.
| | | | | | | Keys are:
| | | | | | | RBM_VORGANG_ID ASC
| | | | | | | Using I/O Size 2 Kbytes for index leaf pages.
| | | | | | | With LRU Buffer Replacement Strategy for index leaf pages.
| | | | | | | Using I/O Size 2 Kbytes for data pages.
| | | | | | | With LRU Buffer Replacement Strategy for data pages.
| | | | |
| | | | | |RESTRICT Operator (VA = 3)(0)(0)(0)(6)(0)
| | | | | |
| | | | | | |SCAN Operator (VA = 2)
| | | | | | | FROM TABLE
| | | | | | | RBM_BUCHUNG_PARAMETER
| | | | | | | DEPOTNUMMER
| | | | | | | Index : SK1
| | | | | | | Forward Scan.
| | | | | | | Positioning by key.
| | | | | | | Keys are:
| | | | | | | RBM_BUCHUNG_ID ASC
| | | | | | | Using I/O Size 2 Kbytes for index leaf pages.
| | | | | | | With LRU Buffer Replacement Strategy for index leaf pages.
| | | | | | | Using I/O Size 2 Kbytes for data pages.
| | | | | | | With LRU Buffer Replacement Strategy for data pages.
| | | | |
| | | | | |RESTRICT Operator (VA = 5)(0)(0)(0)(6)(0)
| | | | | |
| | | | | | |SCAN Operator (VA = 4)
| | | | | | | FROM TABLE
| | | | | | | Kontenstamm
| | | | | | | K
| | | | | | | Index : SK2
| | | | | | | Forward Scan.
| | | | | | | Positioning by key.
| | | | | | | Keys are:
| | | | | | | Kontonummer ASC
| | | | | | | Using I/O Size 2 Kbytes for index leaf pages.
| | | | | | | With LRU Buffer Replacement Strategy for index leaf pages.
| | | | | | | Using I/O Size 2 Kbytes for data pages.
| | | | | | | With LRU Buffer Replacement Strategy for data pages.
| | | | |
| | | | | |RESTRICT Operator (VA = 7)(0)(0)(0)(6)(0)
| | | | | |
| | | | | | |SCAN Operator (VA = 6)
| | | | | | | FROM TABLE
| | | | | | | RBM_BUCHUNG_PARAMETER
| | | | | | | BESTAND
| | | | | | | Index : SK1
| | | | | | | Forward Scan.
| | | | | | | Positioning by key.
| | | | | | | Keys are:
| | | | | | | RBM_BUCHUNG_ID ASC
| | | | | | | Using I/O Size 2 Kbytes for index leaf pages.
| | | | | | | With LRU Buffer Replacement Strategy for index leaf pages.
| | | | | | | Using I/O Size 16 Kbytes for data pages.
| | | | | | | With LRU Buffer Replacement Strategy for data pages.
| | | |
| | | | |RESTRICT Operator (VA = 10)(0)(0)(0)(6)(0)
| | | | |
| | | | | |SCAN Operator (VA = 9)
| | | | | | FROM TABLE
| | | | | | RBM_BUCHUNG_PARAMETER
| | | | | | ANZAHL_EINBUCHEN
| | | | | | Index : SK1
| | | | | | Forward Scan.
| | | | | | Positioning at index start.
| | | | | | Using I/O Size 16 Kbytes for index leaf pages.
| | | | | | With LRU Buffer Replacement Strategy for index leaf pages.
| | | | | | Using I/O Size 16 Kbytes for data pages.
| | | | | | With LRU Buffer Replacement Strategy for data pages.
| | |
| | | |RESTRICT Operator (VA = 13)(0)(0)(0)(11)(0)
| | | |
| | | | |SCAN Operator (VA = 12)
| | | | | FROM TABLE
| | | | | RBM_BUCHUNG_PARAMETER
| | | | | LAGERSTELLE_EINBUCHEN
| | | | | Index : SK1
| | | | | Forward Scan.
| | | | | Positioning at index start.
| | | | | Using I/O Size 16 Kbytes for index leaf pages.
| | | | | With LRU Buffer Replacement Strategy for index leaf pages.
| | | | | Using I/O Size 16 Kbytes for data pages.
| | | | | With LRU Buffer Replacement Strategy for data pages.
| |
| | TO TABLE
| | #grid
| | Using I/O Size 2 Kbytes for data pages.
Because all SP's are writen to search for that lower case. that would be "to much" to rewrite all the SP'S. SO its importened to do that.
I didn't understood how "convert to char" related with "lower case" but, you could create a materialized computed column for "convert" value and create a covered index for columns (RBM_BUCHUNG_ID + computed PARAMETER_NAME).
This case could increase perfomance of your query.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.