6

インデックスの最適化の演習 (読み: インタビューの質問) として、SQL2005 の標準の AdventureWorks データベースでは遅いクエリが必要です。私が試したすべてのクエリは約 1 秒かかります。効果的に最適化できるように、数秒かかるクエリを使用したいと思います。

ここで誰かがそのようなクエリを作成したり、遅いクエリを作成する方法を教えてくれたりできますか? クエリを非パフォーマンスにすることはできないようです:)

4

2 に答える 2

11

ここに、行数が最も多いデータベース テーブルのリストがあります。

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

そのテーブルを使用して、さまざまなバリエーションを試すことができます。たとえば、次のクエリ:

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

私のコンピューターで9秒間実行されます。

これを実行できます:

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

インデックスのないテーブルでの内部結合。非常に人工的な例ですが、今のところ、私のマシンでロールするのに 2 分以上かかります。今 - 20分以上。今 - 1時間20分

于 2009-09-10T13:44:56.760 に答える
0

これらのテーブルの 1 つまたはカーソルに対して相関サブクエリを使用してみてください。

于 2009-09-11T14:12:30.110 に答える