Pergunta

Como exercício (leia: pergunta da entrevista) na otimização do índice, preciso de uma consulta que seja lenta no banco de dados Standard AdventureWorks no SQL2005. Todas as consultas que tentei levam cerca de 1 segundo e eu preferiria ter uma consulta que leva vários segundos para que possa ser otimizada de maneira eficaz.

Alguém aqui pode criar essa consulta ou me dar indicadores de como criar uma consulta lenta? Eu simplesmente não consigo tornar minhas consultas sem desempenho :)

Foi útil?

Solução

Aqui você tem uma lista de tabelas de banco de dados com mais linhas:

Tables - Rows count
Sales.SalesOrderDetail - 121317
Production.TransactionHistory - 113443
Production.TransactionHistoryArchive - 89253
Production.WorkOrder - 72591
Production.WorkOrderRouting - 67131
Sales.SalesOrderHeader - 31465
Sales.SalesOrderHeaderSalesReason - 27647
Person.Contact - 19972
Person.Address - 19614
Sales.CustomerAddress - 19220
Sales.Customer - 19185
Sales.ContactCreditCard - 19118
Sales.CreditCard - 19118
Sales.Individual - 18484
Sales.CurrencyRate - 13532

Você pode tentar diferentes variações usando essas tabelas. Por exemplo, esta consulta:

SELECT * FROM Sales.SalesOrderDetail s
INNER JOIN Production.Product p ON s.ProductID = p.ProductID

corre por 9 segundos no meu computador.

Você pode Rode isto:

SELECT * FROM Production.TransactionHistory th
INNER JOIN Production.TransactionHistoryArchive tha ON th.Quantity = tha.Quantity

Junte -se interno em tabelas não indexadas. Exemplo muito artificial, mas por enquanto leva mais de 2 minutos para rolar na minha máquina. Agora - mais de 20 minutos. Agora - 1H 20 minutos.

Outras dicas

Tente usar uma subconsência correlacionada contra uma dessas tabelas ou um cursor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top