powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / какой план лучьше
4 сообщений из 4, страница 1 из 1
какой план лучьше
    #36889076
gda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
QUERY  1 
set showplan on
set statistics time on
set statistics io on
go
select count(*)
from BusEntRoleProd BERP(index cBusEntRoleProd), BusinessEntity BE
where BE.businessEntityId = BERP.businessEntityId
and BERP.roleId =  11 
and BERP.productId = BERP.productId
go               
             
 1              
 2               Execution Time  0 .
 3               SQL Server cpu time:  0  ms.  SQL Server elapsed time:  0  ms.
 4               Total writes for this command:  0 
 5              
 6               Execution Time  0 .
 7               SQL Server cpu time:  0  ms.  SQL Server elapsed time:  0  ms.
 8              
 9               QUERY PLAN FOR STATEMENT  1  (at line  1 ).
 10           
 11           
 12                STEP  1 
 13                    The type of query is SELECT.
 14                    Evaluate Ungrouped COUNT AGGREGATE.
 15           
 16                    FROM TABLE
 17                        BusEntRoleProd
 18                        BERP
 19                    Nested iteration.
 20                    Using Clustered Index.
 21                    Index : cBusEntRoleProd
 22                    Forward scan.
 23                    Positioning at start of table.
 24                    Using I/O Size  16  Kbytes for data pages.
 25                    With LRU Buffer Replacement Strategy for data pages.
 26           
 27                    FROM TABLE
 28                        BusinessEntity
 29                        BE
 30                    Nested iteration.
 31                    Using Clustered Index.
 32                    Index : x1
 33                    Forward scan.
 34                    Positioning by key.
 35                    Keys are:
 36                        businessEntityId  ASC
 37                    Using I/O Size  16  Kbytes for data pages.
 38                    With LRU Buffer Replacement Strategy for data pages.
 39           
 40                STEP  2 
 41                    The type of query is SELECT.
 42           
 43            Parse and Compile Time  0 .
 44            SQL Server cpu time:  0  ms.
 1                56500 
 1               Table: BusEntRoleProd scan count  1 , logical reads: (regular= 7034  apf= 0  total= 7034 ), physical reads: (regular= 0  apf= 0  total= 0 ), apf IOs used= 0 
 2               Table: BusinessEntity scan count  56575 , logical reads: (regular= 171548  apf= 0  total= 171548 ), physical reads: (regular= 0  apf= 0  total= 0 ), apf IOs used= 0 
 3               Total writes for this command:  0 
 4              
 5               Execution Time  5 .
 6               SQL Server cpu time:  500  ms.  SQL Server elapsed time:  513  ms.

QUERY  2 
set showplan on
set statistics time on
set statistics io on
go
select count(*)
from  BusEntRoleProd BERP join BusinessEntity BE on (BERP.businessEntityId = BE.businessEntityId and BERP.productId = BERP.productId)
where BERP.roleId =  11 
go

 1              
 2               Execution Time  0 .
 3               SQL Server cpu time:  0  ms.  SQL Server elapsed time:  0  ms.
 4               Total writes for this command:  0 
 5              
 6               Execution Time  0 .
 7               SQL Server cpu time:  0  ms.  SQL Server elapsed time:  0  ms.
 8              
 9               QUERY PLAN FOR STATEMENT  1  (at line  1 ).
 10            Executed in parallel by coordinating process and  7  worker processes.
 11           
 12           
 13                STEP  1 
 14                    The type of query is SELECT.
 15                    Evaluate Ungrouped COUNT AGGREGATE.
 16                    Executed in parallel by coordinating process and  7  worker processes.
 17           
 18                    FROM TABLE
 19                        BusEntRoleProd
 20                        BERP
 21                    Nested iteration.
 22                    Table Scan.
 23                    Forward scan.
 24                    Positioning at start of table.
 25                    Executed in parallel with a  7 -way hash scan.
 26                    Using I/O Size  16  Kbytes for data pages.
 27                    With LRU Buffer Replacement Strategy for data pages.
 28           
 29                    FROM TABLE
 30                        BusinessEntity
 31                        BE
 32                    Nested iteration.
 33                    Using Clustered Index.
 34                    Index : x1
 35                    Forward scan.
 36                    Positioning by key.
 37                    Keys are:
 38                        businessEntityId  ASC
 39                    Using I/O Size  2  Kbytes for data pages.
 40                    With LRU Buffer Replacement Strategy for data pages.
 41           
 42                    Parallel result buffer merge.
 43           
 44                STEP  2 
 45                    The type of query is SELECT.
 46                    Executed by coordinating process.
 47           
 48            Parse and Compile Time  0 .
 49            SQL Server cpu time:  0  ms.
 1                56500 
 1               Table: BusEntRoleProd scan count  7 , logical reads: (regular= 49238  apf= 0  total= 49238 ), physical reads: (regular= 0  apf= 0  total= 0 ), apf IOs used= 0 
 2               Table: BusinessEntity scan count  56575 , logical reads: (regular= 171548  apf= 0  total= 171548 ), physical reads: (regular= 0  apf= 0  total= 0 ), apf IOs used= 0 
 3               Total writes for this command:  0 
 4              
 5               Execution Time  0 .
 6               SQL Server cpu time:  0  ms.  SQL Server elapsed time:  380  ms.
...
Рейтинг: 0 / 0
какой план лучьше
    #36889206
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gda wrote:

Как бы из двух второй лучше, но он параллельное выполнение использует (нужно
тебе это или нет -- не знаю). Первый хуже только тем, что параллельно
он выполняться на вашей БД и сервере не может (иначе оптимизатор выдал
бы параллельный план).

А в общем оба плана хреновые, если BusEntRoleProd хоть сколько нибудь
большая таблица.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
какой план лучьше
    #36889664
gda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
А в общем оба плана хреновые, если BusEntRoleProd хоть сколько нибудь
большая таблица.


:)
BusEntRoleProd - 250000 rows ... ок как тогда получить хороший план ... обычный джоин, индексы есть как переписать чтобы хороший был ... и ище прчему хреновые как ты определяеш что хреновые ?!
...
Рейтинг: 0 / 0
какой план лучьше
    #36889987
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gdaMasterZiv
А в общем оба плана хреновые, если BusEntRoleProd хоть сколько нибудь
большая таблица.


:)
BusEntRoleProd - 250000 rows ... ок как тогда получить хороший план ... обычный джоин, индексы есть как переписать чтобы хороший был ... и ище прчему хреновые как ты определяеш что хреновые ?!

У вас в обоих планах происходит сканирование, а не позиционирование.

1
Using Clustered Index.
Index : cBusEntRoleProd
Forward scan.
Positioning at start of table.


2Table Scan.
Forward scan.
Positioning at start of table.


Т.е. в первом случае сканируется весь индекс, во втором вся таблица!
Поэтому надо по полю roleId в таблице BusEntRoleProd сделать индекс.
Но это так..., решение в лоб!!!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / какой план лучьше
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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