Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Тормозит MS SQL  [new]
Doomer
Member

Откуда:
Сообщений: 213
Хелп! Есть база на MS 2000. В ней табличка, 46 полей, 70 тыс. записей, запрос вида SELECT * FROM Table ORDER BY DDate вылняется несколько секунд на довольно мощной машине. Индекс по DDate имеется.
Этот же запрос на Sybase ASA 7 с такой же табличкой выполняется в 3 разa быстрее.
Но это полбеды. Нижеприведенный запрос открывается в MS вообще за неприличное время. На Sybase почти мгновенно.
Если убрать сортировку по DDate, то и на MS открывается мгновенно. DDate типа DateTime.
Куда нужно копать?!
Необходимо как можно быстрее открывать запрос, фетчить все записи не нужно.
SELECT
T.OrderNo AS ObjectIDField,
T.OrderNo AS OrderNo,
T.Status AS Status,
T.Operation AS Operation,
T.DDate AS DDate,
T.DDate AS DocDate,
T.PartNo AS tPartNo_132_ID,
T132_10_132.Articoli AS Articoli,
T.PartNo AS tPartNo_90_ID,
T90_11_90.Desсription AS PDesсription,
T.Qty AS Qty,
T.Payed AS Payed,
T.Price AS Price,
T.Discount AS Discount,
T.Cost1 AS Cost1,
T.PartNo AS PartNo,
T.DocTime AS DocTime,
T.Sender AS tSender_94_ID,
T94_208_94.Desсription AS SenDesсription,
T.Sender AS tSender_1791_ID,
T1791_209_1791.GroupNo AS SenGroupNo,
T.Receiver AS tReceiver_95_ID,
T95_208_95.Desсription AS RecDesсription,
T.OrdInternalID AS OrdInternalID,
T.PaperNo AS PaperNo,
T.FakturaNo AS FakturaNo,
T.ShetNo AS ShetNo,
T.GTDNo AS GTDNo,
T.Saler AS tSaler_93_ID,
T93_208_93.Desсription AS SalDesсription,
T.Sender AS Sender,
T.ComplectDesc AS ComplectDesc,
T.PayedUSD AS PayedUSD,
T.PriceUSD AS PriceUSD,
T.ArticleID AS tArticleID_112_ID,
T112_202_112.ArticleName AS ArticleName,
T.Receiver AS Receiver,
T.SumPayed AS SumPayed,
T.SumPrice AS SumPrice,
T.CurrRate AS CurrRate,
T.Saler AS Saler,
T.ManagerID AS tManagerID_117_ID,
T117_208_117.Desсription AS ManDesсription,
T.PriceColumn AS PriceColumn,
T.PayStatus AS PayStatus,
T.Priznak1 AS Priznak1,
T.Priznak2 AS Priznak2,
T.DateUpdate AS DateUpdate,
T.KKMNumber AS KKMNumber,
T.KKMSection AS KKMSection,
T.ArticleID AS ArticleID,
T.ManagerID AS ManagerID,
T.UpSize AS UpSize,
T.Err AS Err,
T.UserCreateID AS UserCreateID,
T.UserUpdateID AS UserUpdateID,
T.DateCreate AS DateCreate,
T.FirmID AS FirmID,
T.FirmID AS tFirmID_116_ID,
T116_208_116.Desсription AS FDesсription,
T.ORD1No AS ORD1No,
T.PaperNoInt AS PaperNoInt,
T.Srok AS Srok,
T.SCode AS SCode,
T.DDateInput AS DDateInput,
T.RPL AS RPL,
T.PartNo AS tPartNo_1799_ID,
T1799_14_1799.GroupNo AS GGroupNo,
T.PartNo AS tPartNo_1790_ID,
T1563_1024_1790.IzmName AS IzmName
FROM
Orders T
LEFT OUTER JOIN Parts T132_10_132 ON T.PartNo = T132_10_132.PartNo
LEFT OUTER JOIN Parts T90_11_90 ON T.PartNo = T90_11_90.PartNo
LEFT OUTER JOIN VENDORS T94_208_94 ON T.Sender = T94_208_94.VendorNo
LEFT OUTER JOIN VENDORS T1791_209_1791 ON T.Sender = T1791_209_1791.VendorNo
LEFT OUTER JOIN VENDORS T95_208_95 ON T.Receiver = T95_208_95.VendorNo
LEFT OUTER JOIN VENDORS T93_208_93 ON T.Saler = T93_208_93.VendorNo
LEFT OUTER JOIN Articles T112_202_112 ON T.ArticleID = T112_202_112.ArticleID
LEFT OUTER JOIN VENDORS T117_208_117 ON T.ManagerID = T117_208_117.VendorNo
LEFT OUTER JOIN VENDORS T116_208_116 ON T.FirmID = T116_208_116.VendorNo
LEFT OUTER JOIN Parts T1799_14_1799 ON T.PartNo = T1799_14_1799.PartNo
LEFT OUTER JOIN Parts T1790_1563_1790 ON T.PartNo = T1790_1563_1790.PartNo
LEFT OUTER JOIN Izm T1563_1024_1790 ON T1790_1563_1790.IzmNo = T1563_1024_1790.IzmNo
order by DDate
15 янв 06, 11:39    [2255746]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Ку?
left loop join
15 янв 06, 12:28    [2255794]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
1234567
Member

Откуда:
Сообщений: 704
1. План выполнения?
2. Размер и расположение tempdb?
15 янв 06, 13:12    [2255837]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Doomer
Member

Откуда:
Сообщений: 213
Не, те же тормоза. Которые пропадают если убрать сортировку. Может в настройках субд что-то можно оптимизировать?
15 янв 06, 13:33    [2255867]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
1234567
Member

Откуда:
Сообщений: 704
Doomer
Не, те же тормоза. Которые пропадают если убрать сортировку. Может в настройках субд что-то можно оптимизировать?


Оптимизировать можно почти все. Только для конкретных советов предварительно хорошо бы знать конфигурацию системы с SQL Server и самого SQL Server. А общие рекомендации можно прочитать в BOL.
15 янв 06, 13:36    [2255872]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Doomer
Не, те же тормоза. Которые пропадают если убрать сортировку. Может в настройках субд что-то можно оптимизировать?

Покажите структуры, индексы и план выполнения
15 янв 06, 13:38    [2255874]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Doomer
Member

Откуда:
Сообщений: 213
1234567
1. План выполнения?
2. Размер и расположение tempdb?


1. Первый - без сортировки, второй - с сортировкой:

Execution Tree
--------------
Hash Match Root(Right Outer Join, HASH:([T1790_1563_1790].[PartNo])=([T].[PartNo]), RESIDUAL:([T].[PartNo]=[T1790_1563_1790].[PartNo]))
  |--Merge Join(Right Outer Join, MERGE:([T1563_1024_1790].[IzmNo])=([T1790_1563_1790].[IZMNO]), RESIDUAL:([T1790_1563_1790].[IZMNO]=[T1563_1024_1790].[IzmNo]))
  |    |--Clustered Index Scan(OBJECT:([TrivoliNew].[dbo].[IZM].[PK__IZM__7F60ED59] AS [T1563_1024_1790]), ORDERED FORWARD)
  |    |--Index Scan(OBJECT:([TrivoliNew].[dbo].[Parts].[Parts_IzmNo] AS [T1790_1563_1790]), ORDERED FORWARD)
  |--Hash Match Team(Right Outer Join, HASH:([T1799_14_1799].[PartNo])=([T].[PartNo]), RESIDUAL:([T].[PartNo]=[T1799_14_1799].[PartNo]))
       |--Index Scan(OBJECT:([TrivoliNew].[dbo].[Parts].[PARTS_BYGROUPNO] AS [T1799_14_1799]))
       |--Hash Match(Right Outer Join, HASH:([T116_208_116].[VendorNo])=([T].[FirmID]), RESIDUAL:([T].[FirmID]=[T116_208_116].[VendorNo]))
            |--Index Scan(OBJECT:([TrivoliNew].[dbo].[VENDORS].[Descr] AS [T116_208_116]))
            |--Hash Match(Right Outer Join, HASH:([T117_208_117].[VendorNo])=([T].[ManagerID]), RESIDUAL:([T].[ManagerID]=[T117_208_117].[VendorNo]))
                 |--Index Scan(OBJECT:([TrivoliNew].[dbo].[VENDORS].[Descr] AS [T117_208_117]))
                 |--Hash Match(Right Outer Join, HASH:([T112_202_112].[ArticleID])=([T].[ArticleID]), RESIDUAL:([T].[ArticleID]=[T112_202_112].[ArticleID]))
                      |--Clustered Index Scan(OBJECT:([TrivoliNew].[dbo].[Articles].[PK__Articles__21B6055D] AS [T112_202_112]))
                      |--Hash Match(Right Outer Join, HASH:([T93_208_93].[VendorNo])=([T].[Saler]), RESIDUAL:([T].[Saler]=[T93_208_93].[VendorNo]))
                           |--Index Scan(OBJECT:([TrivoliNew].[dbo].[VENDORS].[Descr] AS [T93_208_93]))
                           |--Hash Match(Right Outer Join, HASH:([T95_208_95].[VendorNo])=([T].[Receiver]), RESIDUAL:([T].[Receiver]=[T95_208_95].[VendorNo]))
                                |--Index Scan(OBJECT:([TrivoliNew].[dbo].[VENDORS].[Descr] AS [T95_208_95]))
                                |--Hash Match Root(Right Outer Join, HASH:([T1791_209_1791].[VendorNo])=([T].[Sender]), RESIDUAL:([T].[Sender]=[T1791_209_1791].[VendorNo]))
                                     |--Index Scan(OBJECT:([TrivoliNew].[dbo].[VENDORS].[VENDORS_BYDESCRIPTION] AS [T1791_209_1791]))
                                     |--Hash Match Team(Right Outer Join, HASH:([T94_208_94].[VendorNo])=([T].[Sender]), RESIDUAL:([T].[Sender]=[T94_208_94].[VendorNo]))
                                          |--Index Scan(OBJECT:([TrivoliNew].[dbo].[VENDORS].[Descr] AS [T94_208_94]))
                                          |--Hash Match Root(Right Outer Join, HASH:([T90_11_90].[PartNo])=([T].[PartNo]), RESIDUAL:([T].[PartNo]=[T90_11_90].[PartNo]))
                                               |--Index Scan(OBJECT:([TrivoliNew].[dbo].[Parts].[PARTS_BYDESCRIPTION] AS [T90_11_90]))
                                               |--Hash Match Team(Right Outer Join, HASH:([T132_10_132].[PartNo])=([T].[PartNo]), RESIDUAL:([T].[PartNo]=[T132_10_132].[PartNo]))
                                                    |--Clustered Index Scan(OBJECT:([TrivoliNew].[dbo].[Parts].[PK__Parts__01142BA1] AS [T132_10_132]))

Execution Tree
--------------
Sort(ORDER BY:([T].[DDate] ASC))
  |--Hash Match Root(Right Outer Join, HASH:([T1790_1563_1790].[PartNo])=([T].[PartNo]), RESIDUAL:([T].[PartNo]=[T1790_1563_1790].[PartNo]))
       |--Merge Join(Right Outer Join, MERGE:([T1563_1024_1790].[IzmNo])=([T1790_1563_1790].[IZMNO]), RESIDUAL:([T1790_1563_1790].[IZMNO]=[T1563_1024_1790].[IzmNo]))
       |    |--Clustered Index Scan(OBJECT:([TrivoliNew].[dbo].[IZM].[PK__IZM__7F60ED59] AS [T1563_1024_1790]), ORDERED FORWARD)
       |    |--Index Scan(OBJECT:([TrivoliNew].[dbo].[Parts].[Parts_IzmNo] AS [T1790_1563_1790]), ORDERED FORWARD)
       |--Hash Match Team(Right Outer Join, HASH:([T1799_14_1799].[PartNo])=([T].[PartNo]), RESIDUAL:([T].[PartNo]=[T1799_14_1799].[PartNo]))
            |--Index Scan(OBJECT:([TrivoliNew].[dbo].[Parts].[PARTS_BYGROUPNO] AS [T1799_14_1799]))
            |--Hash Match(Right Outer Join, HASH:([T116_208_116].[VendorNo])=([T].[FirmID]), RESIDUAL:([T].[FirmID]=[T116_208_116].[VendorNo]))
                 |--Index Scan(OBJECT:([TrivoliNew].[dbo].[VENDORS].[Descr] AS [T116_208_116]))
                 |--Hash Match(Right Outer Join, HASH:([T117_208_117].[VendorNo])=([T].[ManagerID]), RESIDUAL:([T].[ManagerID]=[T117_208_117].[VendorNo]))
                      |--Index Scan(OBJECT:([TrivoliNew].[dbo].[VENDORS].[Descr] AS [T117_208_117]))
                      |--Hash Match(Right Outer Join, HASH:([T112_202_112].[ArticleID])=([T].[ArticleID]), RESIDUAL:([T].[ArticleID]=[T112_202_112].[ArticleID]))
                           |--Clustered Index Scan(OBJECT:([TrivoliNew].[dbo].[Articles].[PK__Articles__21B6055D] AS [T112_202_112]))
                           |--Hash Match(Right Outer Join, HASH:([T93_208_93].[VendorNo])=([T].[Saler]), RESIDUAL:([T].[Saler]=[T93_208_93].[VendorNo]))
                                |--Index Scan(OBJECT:([TrivoliNew].[dbo].[VENDORS].[Descr] AS [T93_208_93]))
                                |--Hash Match(Right Outer Join, HASH:([T95_208_95].[VendorNo])=([T].[Receiver]), RESIDUAL:([T].[Receiver]=[T95_208_95].[VendorNo]))
                                     |--Index Scan(OBJECT:([TrivoliNew].[dbo].[VENDORS].[Descr] AS [T95_208_95]))
                                     |--Hash Match Root(Right Outer Join, HASH:([T1791_209_1791].[VendorNo])=([T].[Sender]), RESIDUAL:([T].[Sender]=[T1791_209_1791].[VendorNo]))
                                          |--Index Scan(OBJECT:([TrivoliNew].[dbo].[VENDORS].[VENDORS_BYDESCRIPTION] AS [T1791_209_1791]))
                                          |--Hash Match Team(Right Outer Join, HASH:([T94_208_94].[VendorNo])=([T].[Sender]), RESIDUAL:([T].[Sender]=[T94_208_94].[VendorNo]))
                                               |--Index Scan(OBJECT:([TrivoliNew].[dbo].[VENDORS].[Descr] AS [T94_208_94]))
                                               |--Hash Match Root(Right Outer Join, HASH:([T90_11_90].[PartNo])=([T].[PartNo]), RESIDUAL:([T].[PartNo]=[T90_11_90].[PartNo]))
                                                    |--Index Scan(OBJECT:([TrivoliNew].[dbo].[Parts].[PARTS_BYDESCRIPTION] AS [T90_11_90]))
                                                    |--Hash Match Team(Right Outer Join, HASH:([T132_10_132].[PartNo])=([T].[PartNo]), RESIDUAL:([T].[PartNo]=[T132_10_132].[PartNo]))
                                                         |--Clustered Index Scan(OBJECT:([TrivoliNew].[dbo].[Parts].[PK__Parts__01142BA1] AS [T132_10_132]))
                                                         |--Clustered Index Scan(OBJECT:([TrivoliNew].[dbo].[Orders].[PK__Orders__0BC6C43E] AS [T]))
                                                    |--Clustered Index Scan(OBJECT:([TrivoliNew].[dbo].[Orders].[PK__Orders__0BC6C43E] AS [T]))
15 янв 06, 13:47    [2255887]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Doomer
Member

Откуда:
Сообщений: 213
1234567
2. Размер и расположение tempdb?

2. Почти 300 мегов. Все лежит у меня на компе.
Те же проблемы были и на другой машине. Даже еще хуже, там процессор 1.7 против 2.9 был слабее.
15 янв 06, 13:50    [2255894]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Doomer
Member

Откуда:
Сообщений: 213
3 OrderNo int 4 0
0 PaperNo varchar 15 1
0 PartNo int 4 1
0 DDate datetime 8 1
0 Qty numeric 13 1
0 Saler int 4 1
0 Sender int 4 1
0 Receiver int 4 1
0 Operation int 4 1
0 Payed numeric 13 1
0 UpSize numeric 13 1
0 Price numeric 13 1
0 ComplectDesc varchar 60 1
0 FakturaNo varchar 10 1
0 Status int 4 1
0 Err varchar 15 1
0 GTDNo varchar 25 1
0 ShetNo varchar 15 1
0 UserCreateID int 4 1
0 UserUpdateID int 4 1
0 DateCreate datetime 8 1
0 DateUpdate datetime 8 1
0 PayedUSD numeric 13 1
0 PriceUSD numeric 13 1
0 ArticleID int 4 1
0 SumPrice numeric 13 1
0 SumPayed numeric 13 1
0 RPL int 4 1
0 FirmID int 4 1
0 ManagerID int 4 1
0 ORD1No int 4 1
0 PaperNoInt int 4 1
0 Srok datetime 8 1
0 PayStatus varchar 30 1
0 PriceColumn int 4 1
0 Discount numeric 13 1
0 Cost1 numeric 13 1
0 CurrRate numeric 13 1
0 Priznak1 varchar 10 1
0 Priznak2 varchar 10 1
0 KKMNumber int 4 1
0 KKMSection int 4 1
0 SCode varchar 20 1
0 DDateInput datetime 8 1
0 OrdInternalID int 4 1
0 DocTime datetime 8 1

ALTER TABLE [dbo].[Orders] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[OrderNo]
) ON [PRIMARY]
GO

CREATE INDEX [ORDERS_BYFIRM] ON [dbo].[Orders]([FirmID]) ON [PRIMARY]
GO

CREATE INDEX [ORDERS_BYMANAGER] ON [dbo].[Orders]([ManagerID]) ON [PRIMARY]
GO

CREATE INDEX [ORDERS_BYDATE] ON [dbo].[Orders]([DDate]) ON [PRIMARY]
GO

CREATE INDEX [ORDERS_BYPARTNO] ON [dbo].[Orders]([PartNo]) ON [PRIMARY]
GO

CREATE INDEX [ORDERS_BYSALER] ON [dbo].[Orders]([Saler]) ON [PRIMARY]
GO

CREATE INDEX [ORDERS_BYSENDER] ON [dbo].[Orders]([Sender]) ON [PRIMARY]
GO

CREATE INDEX [ORDERS_BYRECEIVER] ON [dbo].[Orders]([Receiver]) ON [PRIMARY]
GO

CREATE INDEX [ORDERS_BYARTICLE] ON [dbo].[Orders]([ArticleID]) ON [PRIMARY]
GO

CREATE INDEX [ORDERS_BYSTATUS] ON [dbo].[Orders]([Status]) ON [PRIMARY]
GO
15 янв 06, 13:58    [2255902]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Начнем с простого.
Как работает запрос

SELECT
T.DDate AS DDateFROM
Orders T
LEFT OUTER JOIN Parts T132_10_132 ON T.PartNo = T132_10_132.PartNo
LEFT OUTER JOIN Parts T90_11_90 ON T.PartNo = T90_11_90.PartNo
LEFT OUTER JOIN VENDORS T94_208_94 ON T.Sender = T94_208_94.VendorNo
LEFT OUTER JOIN VENDORS T1791_209_1791 ON T.Sender = T1791_209_1791.VendorNo
LEFT OUTER JOIN VENDORS T95_208_95 ON T.Receiver = T95_208_95.VendorNo
LEFT OUTER JOIN VENDORS T93_208_93 ON T.Saler = T93_208_93.VendorNo
LEFT OUTER JOIN Articles T112_202_112 ON T.ArticleID = T112_202_112.ArticleID
LEFT OUTER JOIN VENDORS T117_208_117 ON T.ManagerID = T117_208_117.VendorNo
LEFT OUTER JOIN VENDORS T116_208_116 ON T.FirmID = T116_208_116.VendorNo
LEFT OUTER JOIN Parts T1799_14_1799 ON T.PartNo = T1799_14_1799.PartNo
LEFT OUTER JOIN Parts T1790_1563_1790 ON T.PartNo = T1790_1563_1790.PartNo
LEFT OUTER JOIN Izm T1563_1024_1790 ON T1790_1563_1790.IzmNo = T1563_1024_1790.IzmNo
order by DDate

2. Статистика таблиц обновлена ?
15 янв 06, 14:18    [2255939]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Doomer
Member

Откуда:
Сообщений: 213
Glory
Начнем с простого.
1. Как работает запрос
2. Статистика таблиц обновлена ?


1. Отлично
2. как ее обновить? я запускал sp_updatestats, и в настройках базы стоит автоматически апдейтить ее.
15 янв 06, 14:33    [2255963]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Doomer
Member

Откуда:
Сообщений: 213
Если в SELECT оставить только один столбец, то работает все замечательно быстро.
Вот и выбирай, или один столбец, или не сортировать ).
15 янв 06, 14:57    [2256012]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Doomer
Glory
Начнем с простого.
1. Как работает запрос
2. Статистика таблиц обновлена ?


1. Отлично
2. как ее обновить? я запускал sp_updatestats, и в настройках базы стоит автоматически апдейтить ее.

1. Наверняка в плане вместо Index Scan-ов теперь Index Seek-и
Можно подобавлять в вывод другие столбцы и смотреть как меняется план

2. годится пока
15 янв 06, 15:37    [2256092]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
aleksey_fomchenko
Member

Откуда: Москва
Сообщений: 1014
Doomer
Если в SELECT оставить только один столбец, то работает все замечательно быстро.
Вот и выбирай, или один столбец, или не сортировать ).


Определенно на Bookmark-Lockoop тормозит.
Попробуй сделать используемый индекс кластерным.
И все получится.
15 янв 06, 15:46    [2256103]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Doomer
Member

Откуда:
Сообщений: 213
aleksey_fomchenko
Doomer
Если в SELECT оставить только один столбец, то работает все замечательно быстро.
Вот и выбирай, или один столбец, или не сортировать ).


Определенно на Bookmark-Lockoop тормозит.
Попробуй сделать используемый индекс кластерным.
И все получится.


Сделал индекс по полу DDate(по которому сортирую кластерным). Ничего не изменилось ((((.
15 янв 06, 17:06    [2256217]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Doomer
Member

Откуда:
Сообщений: 213
Glory
Наверняка в плане вместо Index Scan-ов теперь Index Seek-и
Можно подобавлять в вывод другие столбцы и смотреть как меняется план

Неа.
Время на запрос пропорционально количеству добавляемых колонок (.
15 янв 06, 17:14    [2256227]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Doomer
Glory
Наверняка в плане вместо Index Scan-ов теперь Index Seek-и
Можно подобавлять в вывод другие столбцы и смотреть как меняется план

Неа.
Время на запрос пропорционально количеству добавляемых колонок (.

- План только с DDate покажите
- Может у вас проблемы не с сервером, а с сетью, те доставкой результатов клиенту ?
15 янв 06, 17:22    [2256237]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
aleksey_fomchenko
Member

Откуда: Москва
Сообщений: 1014
Похоже на сетевые проблемы.
Согласен с Glory
15 янв 06, 18:32    [2256284]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
1234567
Member

Откуда:
Сообщений: 704
Так все-таки, если выполнить sp_autostats 'Orders', какой будет вывод?
15 янв 06, 18:38    [2256288]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Doomer
Member

Откуда:
Сообщений: 213
Glory
Doomer
Glory
Наверняка в плане вместо Index Scan-ов теперь Index Seek-и
Можно подобавлять в вывод другие столбцы и смотреть как меняется план

Неа.
Время на запрос пропорционально количеству добавляемых колонок (.

- План только с DDate покажите
- Может у вас проблемы не с сервером, а с сетью, те доставкой результатов клиенту ?

Сервер у меня же на машине. Проблем с сетью нет ))

Execution Tree
--------------
Index Scan(OBJECT:([TrivoliNew].[dbo].[Orders].[ORDERS_BYDATE] AS [T]), ORDERED FORWARD)
15 янв 06, 18:46    [2256298]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Doomer
Member

Откуда:
Сообщений: 213
1234567
Так все-таки, если выполнить sp_autostats 'Orders', какой будет вывод?

стало на 25% быстрее, только не пойму уже из-за чего
а sp_updatestats разве не включает sp_autostats 'Orders'?
15 янв 06, 18:48    [2256300]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
1234567
Member

Откуда:
Сообщений: 704
Doomer
а sp_updatestats разве не включает sp_autostats 'Orders'?


Вообще-то автоматическое обновление статистики включает/выключает как раз sp_autostats.

Так все-таки, если выполнить sp_autostats 'Orders', какой будет вывод?

Посмотреть можно?
15 янв 06, 19:46    [2256349]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
aleks2
Guest
Doomer
Хелп! Есть база на MS 2000. В ней табличка, 46 полей, 70 тыс. записей, запрос вида SELECT * FROM Table ORDER BY DDate вылняется несколько секунд на довольно мощной машине. Индекс по DDate имеется.
Этот же запрос на Sybase ASA 7 с такой же табличкой выполняется в 3 разa быстрее.
Но это полбеды. Нижеприведенный запрос открывается в MS вообще за неприличное время. На Sybase почти мгновенно.
Если убрать сортировку по DDate, то и на MS открывается мгновенно. DDate типа DateTime.
Куда нужно копать?!
Необходимо как можно быстрее открывать запрос, фетчить все записи не нужно.


И кому может понадобиться отсортированные 70 тыс записей?
1)
SELECT 
...
FROM 
Orders T 
LEFT OUTER JOIN Parts T132_10_132 ON T.PartNo = T132_10_132.PartNo 
...
order by DDate
OPTION (FAST 1)

2) КЛАСТЕРНЫЕ ИНДЕКСЫ на
Parts (PartNo)
VENDORS (VendorNo)
Articles (ArticleID)
Izm (IzmNo)

3) Ну и самое разумное: ограничить выборку МЕНЬШИМ числом записей.
16 янв 06, 06:47    [2256750]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 34266
Блог
Попробуйте
exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN' 
exec sp_msforeachtable N'DBCC DBREINDEX (''?'')'
16 янв 06, 09:09    [2256877]     Ответить | Цитировать Сообщить модератору
 Re: Тормозит MS SQL  [new]
Doomer
Member

Откуда:
Сообщений: 213
[quot aleks2
OPTION (FAST 1)
[/quot]

Спасибо. В точку. Остальное помогало мало.

Оказалось все просто: OPTION (FAST 50). Все летает.
8 фев 06, 09:54    [2332341]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить