1
SQL 쿼리의 일부를 최적화하고 싶습니다. 아프지 만 나 자신을 시험해 보았지만 더 나아지지는 않았다. 아쉽게도이 SQL 코드는 최적이 아니며 많은 서버 성능을 필요로합니다. sybase SQL 쿼리 최적화 삽입
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
그리고는 실행 계획 출력을 먹으 렴 :
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.
스키마를 게시 할 수 있습니까? 또한, 왜 당신은 숯불로 변환하는 모든 일을하고 있습니까? 그것은 거의 확실하게 인덱스 히트를 아프게합니다 ... –
모든 SP가 해당 소문자를 검색하기 위해 작성되기 때문입니다. 그것은 모든 SP를 다시 작성하는 "많이"될 것입니다. 그래서 그것을 수입했다. – user2976744