2011-09-08 3 views
1

J'ai un problème de performance. Mon manager m'a dit d'accorder une déclaration choisie.Réglage des performances

Nous avons une table de

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" 

qui contient de 29000 enregistrements. il faut environ 2 minutes pour récupérer les données à l'aide de l'analyse d'index clusterisée.

La table ne comporte qu'un seul index cluster.

exigence est d'obtenir tous les enregistrements d'une table et toutes les colonnes .. Mais la réduction du temps ..

Quelqu'un peut-il me aider à cette ...

Merci,

Karthik

+4

Je devine que 'RPT_AccountDetailReport' est une vue. Pouvez-vous montrer le SQL sous-jacent pour cela? – RedFilter

+1

Qu'est-ce que votre gestionnaire va faire avec les 29 000 lignes? –

+0

RPT_AccountDetailReport n'est pas une vue, Il s'agit d'une table ... Besoin d'améliorer les performances sur "select * from RPT_AccountDetailReport" – user922161

Répondre

0

Avez-vous réorganisé/reconstruit votre index (s) le script ci-dessous sera des scripts pour re/créer tous les index pour une table où i.name = '% quoi que vous mettiez ici%'. Il y a un tas de lignes ci-dessous qui sont remmenées que j'ai utilisées dans le passé.

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 

Ou vous pouvez cliquer sur Afficher [estimé] Plan d'exécution & SMS génère tous les index nécessaires.

HTH, LarryR ....

+0

Nice codez. Je vais sauver celui-là. – iandisme

+0

Avez-vous lu la question? Il sélectionne toutes les données d'une table sans filtre. L'ajout ou la reconstruction d'index non clusterisés n'aidera pas. – JNK

+0

Oui c'est ce que j'essaie de dire .. Ajouter un index non clusterisé n'aura aucun effet .. – user922161

Questions connexes