Настройка производительности - PullRequest
1 голос
/ 08 сентября 2011

У меня проблема с производительностью.Мой менеджер сказал мне, чтобы настроить выбор оператора.

У нас есть таблица

SELECT [AcctDetailReportId]
      ,[WorkOrderEneteredDate]
      ,[LocationName]
      ,[LocationNumber]
      ,[District]
      ,[CostCenter]
      ,[GLCode]
      ,[WorkType]
      ,[RequestType]
      ,[RequestCode]
      ,[ServiceLocation]
      ,[Cause]
      ,[Remedy]
      ,[RequestDescription]
      ,[CreatedBy]
      ,[Priority]
      ,[WorkOrderNumber]
      ,[Status]
      ,[DNE]
      ,[InvoiceNumber]
      ,[VendorCode]
      ,[VendorName]
      ,[Quote1]
      ,[Quote2]
      ,[Invoiceid]
      ,[InvoiceSubmittedDate]
      ,[WorkComplete]
      ,[TotalLaborCost]
      ,[TotalMaterialCost]
      ,[SalesTax]
      ,[InvoiceTotal]
      ,[WarrantyExpirationDate]
      ,[UnderWarranty]
      ,[MallName]
      --,[AddressID]
      --,[CommunicationID]
      --,[ContactID]
      --,[StateID]
      --,[CountryID]
      --,[LanguageID]
      --,[AddressTypeID]
      ,[Line1]
      ,[Line2]
      ,[City]
      ,[Province]
      ,[Region]
      ,[ZipPostalCode]
      --,[DeactivateDateTime]
      --,[DeactivateUser]
      ,[CreateDateTime]
      ,[CreateUser]
      --,[PreviousRecordID]
      ,[LocationState]
      ,[CheckNumber]
      ,[CheckDate]

 FROM [Darden].[dbo].[RPT_AccountDetailReport]
GO"

, которая содержит 29000 записей.получение данных с использованием сканирования кластерного индекса занимает около 2 минут.

Таблица имеет только один кластеризованный индекс.

Требуется получить все записи в таблице и во всех столбцах .. Но в сжатые сроки ..

Может ли кто-нибудь помочь мне в этом ...

Спасибо

Картик

1 Ответ

0 голосов
/ 08 сентября 2011

Реорганизовали ли вы / перестроили свои индексы? Сценарий, приведенный ниже, будет содержать сценарии для повторного создания / создания всех индексов для таблицы, где i.name = "% того, что вы здесь поместите%".Ниже приведено несколько строк, которые напоминают о том, что я использовал в прошлом.

SELECT
--stats.object_id AS objectid,
--QUOTENAME(s.name) AS schemaname,
--stats.index_id AS indexid,
i.name AS index_name,
--stats.partition_number AS partitionnum,
stats.avg_fragmentation_in_percent AS frag,
stats.page_count,
QUOTENAME(o.name) AS objectname,
CASE  
      when stats.avg_fragmentation_in_percent < 30 then 'Reorganize'
      when stats.avg_fragmentation_in_percent > 30 then 'Rebuild'
END AS 'action_to_take',
CASE  
      when stats.avg_fragmentation_in_percent < 30 then 'ALTER INDEX '+i.name+ ' ON ' +DB_NAME()+'.'+QUOTENAME(s.name)+'.'+QUOTENAME(o.name)+' REORGANIZE;' 
      when stats.avg_fragmentation_in_percent > 30 then 'ALTER INDEX '+i.name+ ' ON ' +DB_NAME()+'.'+QUOTENAME(s.name)+'.'+QUOTENAME(o.name)+' REBUILD;' 
END AS 'Statement'
FROM 
sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL , NULL, NULL) as stats,
sys.objects AS o,
sys.schemas AS s,
sys.indexes AS i
WHERE o.object_id = stats.object_id
AND s.schema_id = o.schema_id       
AND i.object_id = stats.object_id
AND i.index_id = stats.index_id
AND i.name is not null and i.name not like '%missing index%'
AND stats.avg_fragmentation_in_percent >= 10.0 
--AND stats.page_count >= 5000
--AND stats.index_id > 0
--and i.name like '%880%'
ORDER BY action_to_take,stats.avg_fragmentation_in_percent desc,stats.page_count desc

Или вы можете нажать на кнопку Показать [оценочный] план выполнения, и SMS сгенерирует все необходимые индексы.

HTH, LarryR ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...