powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Огромная БД. Оптимизация sql-запроса
22 сообщений из 22, страница 1 из 1
Огромная БД. Оптимизация sql-запроса
    #35919021
Alexey1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень нужна помощь в оптимизации sql-запроса.
размеры таблиц: от 1 млн до 30 млн.
Выполняется очень долго.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SELECT 
  A.ID_GOODS AS ID_GOODS,
  S.NO366+convert(varchar,S.ID_STORE) AS ID_NETOBJ,
  convert(numeric( 10 , 3 ),round(SUM(ROUND(A.SALDO / AC.DIVIDER, 3 )), 3 )) AS SALDO,
  convert(numeric( 10 , 3 ),round(SUM(ROUND(A.SALDO/AC.DIVIDER, 3 )*AC.PRICE_DELIVERY_BAS*( 1 +AC.STAVKA_N DS/ 100 )), 3 )) AS PRICE_WITH_VAT,
  convert(numeric( 10 , 3 ),round(SUM(ROUND(A.SALDO / AC.DIVIDER, 3 )* AC.PRICE_DELIVERY_BAS), 3 )) AS PRICE_WITH_NO_VAT,
  AC.TIME_APPLY AS TIME_APPLY,
  AC.ID_SUBJECT AS ID_SUPPLIER,
  case when isnull(I.VIRTUAL, 0 ) =  0  then  1  else  0  end as VIRTUAL
FROM STORE_SALDO A
INNER JOIN STORE S ON S.ID_STORE = A.ID_STORE
INNER JOIN ARTIKUL_CATALOG AC ON AC.ARTIKUL = A.ARTIKUL
inner join spec_indoc si on si.artikul=ac.artikul
inner join indoc i on i.id_indoc=si.id_indoc
WHERE A.SALDO >  0  
  AND S.STORE_TYPE =  4  
  AND DATE_SAL <= '#UnloadDate#' 
  AND DATE_NEXT > '#UnloadDate#'
GROUP BY A.ID_GOODS,
S.NO366,
S.ID_STORE,
AC.TIME_APPLY,
AC.ID_SUBJECT,
case when isnull(I.VIRTUAL, 0 ) =  0  then  1  else  0  end


Заранее спасибо.
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919032
--__Александр__--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для ответа на ваш вопрос необходимо как минимум увидеть план запроса. Так же желательно знать структуру и кол-во строк всех таблиц, кчаствующих в запросе.
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919044
Фотография Le Peace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey1st, используйте тег src для sql-запросов.
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919059
Hamlet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще какие индексы стоят и поставьте корректно задачу, может можно будет обоит внешним соединением?
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919090
Alexey1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица STORE_SALDO (31 377 889 ЗАПИСЕЙ)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
DATE_SAL
ID_STORE
ARTIKUL
SUBARTIKUL
DATE_NEXT
OBOROT_IN
OBOROT_OUT
RESERV
SALDO
FREE_SALDO
PRICE
ID_GOODS

Таблица ARTIKUL_CATALOG (4 138 820 ЗАПИСЕЙ)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
ARTIKUL	
ID_CURRENCY	
ID_GOODS	
ID_INDOC_CURRENCY	
SERIES	
PRICE_DELIVERY_CURR	
COST_DELIVERY_CURR	
PRICE_DELIVERY_BAS	
PRICE_MANUF	
PRICE_MANUF_BAS	
BASE_PRICE_CURR	
TIME_APPLY	
START_SALE_DATE	
END_SALE_DATE	
STAVKA_NDS	
STAVKA_NDS_IN	
SALE_TAXE	
ID_OBJECT	
ID_DOC	
ID_SUBJECT	
HIDDEN	
SUPER_HIDDEN	
STORE_HIDDEN	
DIRTY	
SUPPLIER_ARTIKUL	
NACENKA_BAS	
DIVIDER	
GTD	
CERTIFICATE_NUM	
CERTIFICATE_TIME	
CERT_ISSUER_NAME	
registered_num_old	
OPT_NAC	
OPT_NAC_2	
ARTIKUL_ID	
PRICE_RETAIL	
TSN	
PRICE_MAX	
IS_FAKE	
STAVKA_NDS_SAVED	
registered_num

Таблица SPEC_INDOC(4 049 444 ЗАПИСЕЙ)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
ID_SPEC_INDOC	
ID_INDOC	
ARTIKUL	
SUBARTIKUL	
QUANTITY	
ID_DOC_DRONS	
BAR_CODE	
OPT_NAC	
POSTAV_PRICE	
QUANT_DIV

Таблица INDOC(266 032 ЗАПИСЕЙ)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
ID_INDOC	
ID_STORE	
ID_SUBJECT	
ID_CURRENCY	
PAY_ID_CURRENCY	
ID_CUSTOM_OUTDOC	
BARTER	
ID_SINGLE_DEMAND	
FINANCE_DISCOUNT	
NATURE_DISCOUNT	
NATURE_DISCOUNT_ANAL	
NUM_DOC	
INVOICE_TTN	
DATE_OWNERSHIP	
DOC_DATE	
DOC_CREATE_DATE	
SUM_DOC	NDS	
CUSTOM_PAYMENT	
CUSTOM_ARRANGE	
TRANSPORT_PAYMENT	
COMIS_PAYMENT	
CUSTOM_ARRANGE_CURR	
CONVERT_PERCENT	
EXTRA_SPENDING_CURR	
EXTRA_SPENDING_BAS	
SUMMA_PAY	
DATE_PAY	
LAST_PHASE_NUM	
GOOD_USER	
ZERO_MANUF_NAC	
COMPUTE_PRICE_MANUF	
NDS_FREE	
RATE	
NDS_IN_SUMMA_PAY	
ID_SUBJECT_RETAIL	
PACK_LIST_NUM	
EDOCUMENT	
SUM_DOC_BAS	
STAVKA_NDS	
ID_ACCOUNTS_INDOC	
INVOICE_FACTURA_NUM	
INVOICE_FACTURA_DATE	
NUM_ACT	
SUM_ACT	
NDS_ACT	
DATE_ACT	
DEMAND_EXIST	
TSN	
CONVERT_PERCENT_RATE	
STATE	
PACKAGE_NUMBER	
NO_NDS	
VIRTUAL	
NO366	
STORE_NAME	
ADDRESS	
INVOICE_SUMMA_PAY	
id_subject_real
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919099
--__Александр__--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, у меня в сообщении на первом месте стоял ПЛАН ЗАПРОСА.
А под структурой таблиц понимался код, который создает эту таблицу(что бы уыидить типы полей и тд).
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919105
Alexey1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
План запроса:


QUERY PLAN FOR STATEMENT 1 (at line 1).
Executed in parallel by coordinating process and 5 worker processes.
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919108
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey1stПлан запроса:


QUERY PLAN FOR STATEMENT 1 (at line 1).
Executed in parallel by coordinating process and 5 worker processes.

http://www.sql.ru/faq/faq_topic.aspx?fid=393
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919109
Ты издеваешься* Кто такой план читать будет? Давай текстовый план
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919115
--__Александр__--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glory
В обще образовательных целях, могли бы вы пояснить, как этот человек смог получить в MS SQL Sever такой "чудесный" план.
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919120
Alexey1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
CREATE TABLE dbo.INDOC
(
    ID_INDOC             numeric( 10 , 0 ) NOT NULL,
    ID_STORE             numeric( 10 , 0 ) NOT NULL,
    ID_SUBJECT           numeric( 10 , 0 ) NOT NULL,
    ID_CURRENCY          numeric( 10 , 0 ) NOT NULL,
    PAY_ID_CURRENCY      numeric( 10 , 0 ) NOT NULL,
    ID_CUSTOM_OUTDOC     numeric( 10 , 0 ) NULL,
    BARTER               tinyint       DEFAULT  0  NOT NULL,
    ID_SINGLE_DEMAND     numeric( 10 , 0 ) NULL,
    FINANCE_DISCOUNT     money         DEFAULT  0  NOT NULL,
    NATURE_DISCOUNT      money         DEFAULT  0  NOT NULL,
    NATURE_DISCOUNT_ANAL money         DEFAULT  0  NOT NULL,
    NUM_DOC              numeric( 10 , 0 ) NOT NULL,
    INVOICE_TTN          varchar( 255 )  NULL,
    DATE_OWNERSHIP       datetime      NOT NULL,
    DOC_DATE             datetime      NOT NULL,
    DOC_CREATE_DATE      datetime      DEFAULT getdate() NOT NULL,
    SUM_DOC              money         DEFAULT  0  NOT NULL,
    NDS                  money         DEFAULT  0  NOT NULL,
    CUSTOM_PAYMENT       money         DEFAULT  0  NOT NULL,
    CUSTOM_ARRANGE       money         DEFAULT  0  NOT NULL,
    TRANSPORT_PAYMENT    money         DEFAULT  0  NOT NULL,
    COMIS_PAYMENT        money         DEFAULT  0  NOT NULL,
    CUSTOM_ARRANGE_CURR  money         DEFAULT  0  NOT NULL,
    CONVERT_PERCENT      money         DEFAULT  0  NOT NULL,
    EXTRA_SPENDING_CURR  money         DEFAULT  0  NOT NULL,
    EXTRA_SPENDING_BAS   money         DEFAULT  0  NOT NULL,
    SUMMA_PAY            money         DEFAULT  0  NOT NULL,
    DATE_PAY             datetime      NOT NULL,
    LAST_PHASE_NUM       tinyint       DEFAULT  0  NOT NULL,
    GOOD_USER            char( 30 )      DEFAULT USER NOT NULL,
    ZERO_MANUF_NAC       tinyint       DEFAULT  0  NOT NULL,
    COMPUTE_PRICE_MANUF  tinyint       DEFAULT  0  NOT NULL,
    NDS_FREE             tinyint       DEFAULT  0  NOT NULL,
    RATE                 money         NULL,
    NDS_IN_SUMMA_PAY     money         DEFAULT  0  NOT NULL,
    ID_SUBJECT_RETAIL    numeric( 10 , 0 ) NULL,
    PACK_LIST_NUM        numeric( 10 , 0 ) DEFAULT  0  NOT NULL,
    EDOCUMENT            int           DEFAULT  0  NOT NULL,
    SUM_DOC_BAS          money         DEFAULT  0  NOT NULL,
    STAVKA_NDS           money         NULL,
    ID_ACCOUNTS_INDOC    numeric( 10 , 0 ) NULL,
    INVOICE_FACTURA_NUM  varchar( 20 )   NULL,
    INVOICE_FACTURA_DATE datetime      NULL,
    NUM_ACT              varchar( 20 )   NULL,
    SUM_ACT              money         NULL,
    NDS_ACT              money         NULL,
    DATE_ACT             datetime      NULL,
    DEMAND_EXIST         int           NULL,
    TSN                  int           DEFAULT  0  NULL,
    CONVERT_PERCENT_RATE money         NULL,
    STATE                int           DEFAULT - 1  NOT NULL,
    PACKAGE_NUMBER       int           DEFAULT  0  NOT NULL,
    NO_NDS               tinyint       DEFAULT  0  NOT NULL,
    VIRTUAL              int           NULL,
    NO366                varchar( 10 )   NULL,
    STORE_NAME           varchar( 255 )  NULL,
    ADDRESS              varchar( 255 )  NULL,
    INVOICE_SUMMA_PAY    money         DEFAULT  0  NULL,
    id_subject_real      numeric( 10 , 0 ) NULL,
    CONSTRAINT PK_INDOC
    PRIMARY KEY CLUSTERED (ID_INDOC),
    CONSTRAINT CKC_RATE_INDOC
    CHECK (RATE is null or ( RATE <>  0 
     )),
    CONSTRAINT FK_INDOC_REFERENCE_ACCOUNTS
    FOREIGN KEY (ID_ACCOUNTS_INDOC)
    REFERENCES dbo.ACCOUNTS_INDOC (ID_ACCOUNTS_INDOC),
    CONSTRAINT FK_INDOC_REF_27424_CURRENCY
    FOREIGN KEY (ID_CURRENCY)
    REFERENCES dbo.CURRENCY (ID_CURRENCY),
    CONSTRAINT FK_INDOC_REF_41393_STORE
    FOREIGN KEY (ID_STORE)
    REFERENCES dbo.STORE (ID_STORE),
    CONSTRAINT FK_INDOC_REF_52431_CURRENCY
    FOREIGN KEY (PAY_ID_CURRENCY)
    REFERENCES dbo.CURRENCY (ID_CURRENCY),
    CONSTRAINT FK_INDOC_REF_95202_CUSTOM_O
    FOREIGN KEY (ID_CUSTOM_OUTDOC)
    REFERENCES dbo.CUSTOM_OUTDOC (ID_CUSTOM_OUTDOC)
)

CREATE TABLE dbo.STORE_SALDO
(
    DATE_SAL   datetime      NOT NULL,
    ID_STORE   numeric( 10 , 0 ) NOT NULL,
    ARTIKUL    numeric( 10 , 0 ) NOT NULL,
    SUBARTIKUL numeric( 10 , 0 ) NOT NULL,
    DATE_NEXT  datetime      NOT NULL,
    OBOROT_IN  numeric( 15 , 0 ) DEFAULT  0  NOT NULL,
    OBOROT_OUT numeric( 15 , 0 ) DEFAULT  0  NOT NULL,
    RESERV     numeric( 15 , 0 ) DEFAULT  0  NOT NULL,
    SALDO      numeric( 15 , 0 ) DEFAULT  0  NOT NULL,
    FREE_SALDO numeric( 15 , 0 ) DEFAULT  0  NOT NULL,
    PRICE      money         DEFAULT  0  NOT NULL,
    ID_GOODS   numeric( 10 , 0 ) NOT NULL,
    CONSTRAINT PK_STORE_SALDO
    PRIMARY KEY CLUSTERED (DATE_SAL,ID_STORE,ARTIKUL,SUBARTIKUL),
    CONSTRAINT CKC_FREE_SALDO_STORE_SA
    CHECK (FREE_SALDO >=  0 ),
    CONSTRAINT POSITEVE_STORE_SALDO2
    CHECK (SALDO >=  0 ),
    CONSTRAINT CKC_OBOROT_IN_STORE_SA
    CHECK (OBOROT_IN >=  0 ),
    CONSTRAINT CKC_RESERV_STORE_SA
    CHECK (RESERV >=  0 ),
    CONSTRAINT CKC_OBOROT_OUT_STORE_SA
    CHECK (OBOROT_OUT >=  0 ),
    CONSTRAINT CKC_VALID_RESERV
    CHECK (RESERV <= SALDO)
)

CREATE TABLE dbo.ARTIKUL_CATALOG
(
    ARTIKUL             numeric( 10 , 0 ) NOT NULL,
    ID_CURRENCY         numeric( 10 , 0 ) NOT NULL,
    ID_GOODS            numeric( 10 , 0 ) NOT NULL,
    ID_INDOC_CURRENCY   numeric( 10 , 0 ) NOT NULL,
    SERIES              varchar( 255 )  NULL,
    PRICE_DELIVERY_CURR money         DEFAULT  0  NOT NULL,
    COST_DELIVERY_CURR  money         DEFAULT  0  NOT NULL,
    PRICE_DELIVERY_BAS  money         DEFAULT  0  NOT NULL,
    PRICE_MANUF         money         NULL,
    PRICE_MANUF_BAS     money         NULL,
    BASE_PRICE_CURR     money         DEFAULT  0  NOT NULL,
    TIME_APPLY          datetime      NOT NULL,
    START_SALE_DATE     datetime      DEFAULT '99990101' NOT NULL,
    END_SALE_DATE       datetime      DEFAULT '99990101' NOT NULL,
    STAVKA_NDS          numeric( 5 , 2 )  DEFAULT  0  NOT NULL,
    STAVKA_NDS_IN       numeric( 5 , 2 )  DEFAULT  0  NOT NULL,
    SALE_TAXE           money         DEFAULT  0  NOT NULL,
    ID_OBJECT           numeric( 10 , 0 ) NOT NULL,
    ID_DOC              numeric( 10 , 0 ) NOT NULL,
    ID_SUBJECT          numeric( 10 , 0 ) NOT NULL,
    HIDDEN              bit           DEFAULT  0  NOT NULL,
    SUPER_HIDDEN        bit           DEFAULT  1  NOT NULL,
    STORE_HIDDEN        bit           DEFAULT  1  NOT NULL,
    DIRTY               bit           NOT NULL,
    SUPPLIER_ARTIKUL    char( 15 )      NULL,
    NACENKA_BAS         money         NULL,
    DIVIDER             numeric( 15 , 0 ) DEFAULT  1  NOT NULL,
    GTD                 varchar( 100 )  NULL,
    CERTIFICATE_NUM     varchar( 50 )   NULL,
    CERTIFICATE_TIME    datetime      NULL,
    CERT_ISSUER_NAME    varchar( 255 )  NULL,
    registered_num_old  numeric( 10 , 0 ) NULL,
    OPT_NAC             money         NULL,
    OPT_NAC_2           money         NULL,
    ARTIKUL_ID          int           NULL,
    PRICE_RETAIL        money         NULL,
    TSN                 int           DEFAULT  0  NULL,
    PRICE_MAX           money         NULL,
    IS_FAKE             int           NULL,
    STAVKA_NDS_SAVED    numeric( 5 , 2 )  NULL,
    registered_num      varchar( 255 )  NULL,
    CONSTRAINT PK_ARTIKUL_CATALOG
    PRIMARY KEY CLUSTERED (ARTIKUL),
    CONSTRAINT CKC_DIVIDER_ARTIKUL_2
    CHECK (DIVIDER >=  1 ),
    CONSTRAINT CKC_PRICE_MANUF_ARTIKUL_
    CHECK (PRICE_MANUF is null or ( PRICE_MANUF <>  0 
     )),
    CONSTRAINT CKC_PRICE_MANUF_BAS_ARTIKUL_
    CHECK (PRICE_MANUF_BAS is null or ( PRICE_MANUF_BAS <>  0 
     )),
    CONSTRAINT FK_ARTIKUL__REF_61471_CURRENCY
    FOREIGN KEY (ID_CURRENCY)
    REFERENCES dbo.CURRENCY (ID_CURRENCY)
)

CREATE TABLE dbo.SPEC_INDOC
(
    ID_SPEC_INDOC numeric( 10 , 0 ) NOT NULL,
    ID_INDOC      numeric( 10 , 0 ) NOT NULL,
    ARTIKUL       numeric( 10 , 0 ) NOT NULL,
    SUBARTIKUL    numeric( 10 , 0 ) NOT NULL,
    QUANTITY      numeric( 15 , 0 ) DEFAULT  0  NOT NULL,
    ID_DOC_DRONS  numeric( 10 , 0 ) NULL,
    BAR_CODE      varchar( 13 )   NULL,
    OPT_NAC       money         NULL,
    POSTAV_PRICE  T_MONEY_TYPE  NULL,
    QUANT_DIV     int           DEFAULT  0  NOT NULL,
    CONSTRAINT PK_SPEC_INDOC
    PRIMARY KEY CLUSTERED (ID_SPEC_INDOC),
    CONSTRAINT CKC_QUANTITY_SPEC_IND
    CHECK (QUANTITY >=  0 ),
    CONSTRAINT FK_SPEC_IND_REF_42657_ARTIKUL_
    FOREIGN KEY (ARTIKUL)
    REFERENCES dbo.ARTIKUL_CATALOG (ARTIKUL),
    CONSTRAINT FK_SPEC_IND_REF_42661_SUBARTIK
    FOREIGN KEY (SUBARTIKUL)
    REFERENCES dbo.SUBARTIKULS (SUBARTIKUL)
)
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919127
Alexey1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
QUERY PLAN FOR STATEMENT 1 (at line 1).
Executed in parallel by coordinating process and 5 worker processes.


STEP 1
The type of query is INSERT.
The update mode is direct.
Executed by coordinating process.
Worktable1 created for REFORMATTING.

FROM TABLE
SPEC_INDOC
si
Nested iteration.
Index : UNIQUE_ART_SUBART
Forward scan.
Positioning at index start.
Index contains all needed columns. Base table will not be read.
Using I/O Size 64 Kbytes for index leaf pages.
With LRU Buffer Replacement Strategy for index leaf pages.
TO TABLE
Worktable1.

STEP 2
The type of query is SELECT.
Executed in parallel by coordinating process and 5 worker processes.

FROM TABLE
STORE
S
Nested iteration.
Table Scan.
Forward scan.
Positioning at start of table.
Using I/O Size 64 Kbytes for data pages.
With LRU Buffer Replacement Strategy for data pages.

FROM TABLE
RETAIL_PARAMETERS
RP
Nested iteration.
Using Clustered Index.
Index : PK_RETAIL_PARAMETERS
Forward scan.
Positioning by key.
Index contains all needed columns. Base table will not be read.
Keys are:
ID_SUBJECT ASC
Using I/O Size 8 Kbytes for index leaf pages.
With LRU Buffer Replacement Strategy for index leaf pages.

FROM TABLE
SUBJECTS
sj
Nested iteration.
Using Clustered Index.
Index : PK_SUBJECTS
Forward scan.
Positioning by key.
Keys are:
ID_SUBJECT ASC
Using I/O Size 8 Kbytes for index leaf pages.
With LRU Buffer Replacement Strategy for index leaf pages.
Using I/O Size 8 Kbytes for data pages.
With LRU Buffer Replacement Strategy for data pages.

FROM TABLE
REGION
r
Nested iteration.
Table Scan.
Forward scan.
Positioning at start of table.
Using I/O Size 8 Kbytes for data pages.
With LRU Buffer Replacement Strategy for data pages.

FROM TABLE
RETAIL_SALES
RS
Nested iteration.
Index : RS_STORE_IND
Forward scan.
Positioning by key.
Keys are:
ID_STORE ASC
SALE_DATE ASC
Executed in parallel with a 5-way hash scan.
Using I/O Size 64 Kbytes for index leaf pages.
With LRU Buffer Replacement Strategy for index leaf pages.
Using I/O Size 64 Kbytes for data pages.
With LRU Buffer Replacement Strategy for data pages.

FROM TABLE
DISCOUNTS
D
Nested iteration.
Using Clustered Index.
Index : PK_DISCOUNTS
Forward scan.
Positioning by key.
Keys are:
ID_CHEQUE ASC
ID_SUBJECT ASC
Using I/O Size 64 Kbytes for index leaf pages.
With LRU Buffer Replacement Strategy for index leaf pages.
Using I/O Size 64 Kbytes for data pages.
With LRU Buffer Replacement Strategy for data pages.

FROM TABLE
CHEQUE_TYPE
CT
Nested iteration.
Using Clustered Index.
Index : PK_CHEQUE_TYPE
Forward scan.
Positioning by key.
Index contains all needed columns. Base table will not be read.
Keys are:
ID_CHEQUE_TYPE ASC
Using I/O Size 8 Kbytes for index leaf pages.
With LRU Buffer Replacement Strategy for index leaf pages.

FROM TABLE
ARTIKUL_CATALOG
ac
Nested iteration.
Using Clustered Index.
Index : PK_ARTIKUL_CATALOG
Forward scan.
Positioning by key.
Keys are:
ARTIKUL ASC
Using I/O Size 8 Kbytes for index leaf pages.
With LRU Buffer Replacement Strategy for index leaf pages.
Using I/O Size 8 Kbytes for data pages.
With LRU Buffer Replacement Strategy for data pages.

FROM TABLE
GOODS
g
Nested iteration.
Using Clustered Index.
Index : PK_GOODS
Forward scan.
Positioning by key.
Index contains all needed columns. Base table will not be read.
Keys are:
ID_GOODS ASC
Using I/O Size 8 Kbytes for index leaf pages.
With LRU Buffer Replacement Strategy for index leaf pages.

FROM TABLE
SUBJECTS
sjs
Nested iteration.
Using Clustered Index.
Index : PK_SUBJECTS
Forward scan.
Positioning by key.
Keys are:
ID_SUBJECT ASC
Using I/O Size 8 Kbytes for index leaf pages.
With LRU Buffer Replacement Strategy for index leaf pages.
Using I/O Size 8 Kbytes for data pages.
With LRU Buffer Replacement Strategy for data pages.

FROM TABLE
Worktable1.
Nested iteration.
Using Clustered Index.
Forward scan.
Positioning by key.
Using I/O Size 8 Kbytes for data pages.
With LRU Buffer Replacement Strategy for data pages.

FROM TABLE
INDOC
i
Nested iteration.
Using Clustered Index.
Index : PK_INDOC
Forward scan.
Positioning by key.
Keys are:
ID_INDOC ASC
Using I/O Size 8 Kbytes for index leaf pages.
With LRU Buffer Replacement Strategy for index leaf pages.
Using I/O Size 8 Kbytes for data pages.
With LRU Buffer Replacement Strategy for data pages.

Parallel network buffer merge.
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919135
--__Александр__--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настойчивый какой ))
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919139
Alexey1st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу модераторов перенести раздел в sybase
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919142
Hamlet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дайте план в текстовом виде в какой структуре выдает SSMS (просто Copy/Paste). И используйте тег для оформления постов SRC.
Пример
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919148
HamletДайте план в текстовом виде в какой структуре выдает SSMS (просто Copy/Paste). И используйте тег для оформления постов SRC.
Пример Человек жен сказал, что ветки форума попутал. У него SyBase.
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35919165
Yr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Yr
Гость
Alexey1st,

Можно воспользоваться DataBase Ingine Tuning Advisor.
В 2005 Sql Managment Studio его можно вызвать через меню - Tools -> DataBase Ingine Tuning Advisor.
Если перед этим выфделить в Studio текст запроса он сразу окажется в Tuning Advisor.
Tuning Advisor в качестве результата своей работы предлагает рекомендации по созданию статистики и индексов. Думать практически не надо :)

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35922013
Фотография Alexandr Nikolaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Alexey1st
Где скрипт для таблицы STORE ?
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35923435
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прежде всего вам надо избавиться от этого в плане:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
STEP 1
The type of query is INSERT.
The update mode is direct.
Executed by coordinating process.
Worktable1 created for REFORMATTING.

FROM TABLE
SPEC_INDOC
si
Nested iteration.
Index : UNIQUE_ART_SUBART
Forward scan.
Positioning at index start.
Index contains all needed columns. Base table will not be read.
Using I/O Size 64 Kbytes for index leaf pages.
With LRU Buffer Replacement Strategy for index leaf pages.
TO TABLE
Worktable1.

Это -- т.н. создание временного индекса. А по сути - копирование всей таблицы в рабочуу таблицу и сортировка её.
Сами понимаете, с вашими объёмами ( 4 миллиона ) это, скажем так, не очень хорошо.
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35923441
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё выполните на все таблицы

Код: plaintext
1.
exec sp_helpindex <table> 

и пошлите сюда.
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35923449
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Много ли в таблице STORE_SALDO записей с DATE_SAL <= '#UnloadDate#'

Много ли в таблице STORE_SALDO записей с DATE_SAL <= '#UnloadDate#' и с
DATE_NEXT > '#UnloadDate#' ?
...
Рейтинг: 0 / 0
Огромная БД. Оптимизация sql-запроса
    #35923475
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой-то план вы левый прислали.

Где таблица STORE_SALDO A ?
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Огромная БД. Оптимизация sql-запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]